在配置文件 session 存储中使用 Yii 框架的处理方式如下:
'session' => array(
//'sessionName' => 'SomeSession',
'class' => 'CDbHttpSession',
'connectionID' => 'SomeConnection',
'autoCreateSessionTable' => false,
'sessionTableName' => 'SomeTable',
'autoStart' => 'false',
'cookieMode' => 'only',
'useTransparentSessionID' => false,
'timeout' => CSESSIONTIMEOUT,
'cookieParams' => array(
'path' => '/',
'domain' => '.somedomain.extension',
'expire' => time()+5256000,
'lifetime' => time()+5256000,
//'httpOnly' => true,
),
),
因此,正如您所见, session 存储在具有给定生命周期的数据库中的表中。但是,如果我检查数据库中存储的 session ,它们不会在给定的生命周期内存储,它们会在一年的生命周期内存储。
在我们的应用程序中,我唯一能找到的生命周期为一年的就是 cookie。例如像这样:
setcookie("cookie_name", $someValue, time()+31536000, "/", "somedomain");
让我感到困惑的是我们应用程序中的 cookie。这可能会覆盖 Yii session 存储配置吗?
更新
我也碰到过这行代码
$_SESSION['POLL_'.$idPoll.'somekey'] = strtotime("now");
那行代码在数据库中插入了一条 session 记录。但该记录也有一年的生命周期。这怎么可能?
最佳答案
您需要添加 timeout像这样配置的参数:
'session' => array(
'class' => 'CDbHttpSession',
'timeout' => 5256000,
// ...
关于php - Yii session 存储、生命周期和 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332413/