0

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

现在我的问题是:

我是否需要在运行时配置中更改 session.save_handler 的值,因为默认设置为“文件”,或者函数 session_set_save_handler 是否覆盖(忽略)它?

如果 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;
}
...
4

1 回答 1

1

session.save_handler不,如果您调用,则不要设置session_set_save_handler(),但auto_start默认配置的将启动(内置或由模块提供),而不是您的用户提供的。关于自动启动:这似乎是个好主意,但请记住,打开会话会阻止所有其他启动会话的请求,直到它完成。因此,最好仅在需要时才开始会话。

于 2013-03-14T00:44:37.097 回答