我正在与Silex构建一个小的后台项目,我正在使用PdoSessionHandler
在数据库中存储会话。我已经成功将会话存储在数据库中,但似乎将cookie_lifetime
参数设置为$ app变量会更改cookie的到期时间而不会更改数据库中的会话生存期。
$app->register(new Silex\Provider\SessionServiceProvider(), [
'session.storage.options' => [
'name' => '_PROJECTBACKOFFICE',
'cookie_lifetime' => 15552000,
],
]);
看了PdoSessionHandler
的代码后,看起来数据库中会话生命周期的值取了php.ini设置session.gc_maxlifetime
中的值:
$maxlifetime = (int) ini_get('session.gc_maxlifetime');
并将值存储到数据库字段
中$mergeStmt = $this->pdo->prepare($mergeSql);
$mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
$mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
$mergeStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
因此,看起来增加会话生存期的唯一方法是更改php.ini设置。有没有人以编程方式成功改变数据库的生命周期?
答案 0 :(得分:0)
您可以在.htaccess
中进行设置,这是唯一的方法。它必须高于SessionServiceProvider()
设置中设置的生命周期:
php_value session.gc_maxlifetime "3600"