3
我正在用Silex构建一个小型后台项目,我正在使用PdoSessionHandler
将会话存储在数据库中。我已经成功地将会话存储在数据库中,但似乎将$ app变量的参数cookie_lifetime
设置为更改cookie的过期时间,但不更改数据库中的会话生存期。无法使用PDOSessionHandler设置会话生存期Silex
$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设置。有没有人成功地以编程方式改变数据库的生命周期?
我已经做了与PHP的功能'ini_set',但我一直在寻找的东西,这并不意味着改变php.ini配置。 – Khriz
您不需要更改'php.ini',只需创建一个'.htaccess'文件即可。 –
我知道,但是如果我想为不同的用户使用不同的会话值...我想要一个编程解决方案。 – Khriz