Php 使用session\u set\u save\u处理程序时是否需要更改session.save\u处理程序

Php 使用session\u set\u save\u处理程序时是否需要更改session.save\u处理程序,php,session,Php,Session,我将会话数据存储在数据库中。类内会话是用于存储和检索数据的存储函数 现在我的问题是: 我是否需要更改运行时配置中session.save_handler的值,因为默认设置为“files”, 或者函数会话\u set\u save\u处理程序是否覆盖(忽略)了该操作 如果启用了session.auto_start,那么使用哪个处理程序呢 以下是我的课堂教学的最小化版本: class Session { public function __construct($registry, $session

我将会话数据存储在数据库中。类内会话是用于存储和检索数据的存储函数

现在我的问题是:

我是否需要更改运行时配置中session.save_handler的值,因为默认设置为“files”, 或者函数会话\u set\u save\u处理程序是否覆盖(忽略)了该操作

如果启用了session.auto_start,那么使用哪个处理程序呢

以下是我的课堂教学的最小化版本:

class Session
{

public function __construct($registry, $sessionhash = '', $userid = 0, $password = '')
{
    $this->config = cl_Config::instance();
    $this->db = cl_Database::instance($this->config);
    $this->hasher = cl_Hasher::instance();

    // Register this object as the session handler
    session_set_save_handler( 
        array( $this, "open" ), 
        array( $this, "close" ),
        array( $this, "read" ),
        array( $this, "write"),
        array( $this, "destroy"),
        array( $this, "gc" )
    );

function open( $save_path, $session_name )
{
    ...
    return true;
}

function close( $save_path, $session_name )
{
    ...
    return true;
}

function read( $id )
{
    ...
}

function write( $id, $data )
{
    ...
    return true;
}
...

不,如果调用
会话设置保存处理程序()
,则不需要设置会话。保存处理程序,但使用
自动启动
将启动默认配置的处理程序(内置或由模块提供),而不是用户提供的处理程序。关于自动启动:这似乎是个不错的主意,但请记住,打开会话会阻止启动会话的所有其他请求,直到会话完成。所以最好只在需要时启动会话。

我不会使用自动启动,因为我不需要在每页上都启动会话。这里还有一个问题:我可以在这个类的函数open中读写cookies吗?谢谢!是的,您可以执行PHP通常可以执行的所有操作(嵌套
session\u start()
calls:)除外),不过您应该遵守给定的会话id。