我们最近将PHP SESSION管理从memcache切换到了Redis。在正确存储SESSION的同时,我们注意到人们现在每1440年被注销,或者session.gc_maxlifetime
的默认值。但是在我们的php.ini文件中,我们设置了以下值:
session.gc_maxlifetime = 86400
session.cookie_lifetime = 86400
我已经通过phpinfo()
确认,只有当我们的保存处理程序设置为session.save_handler = files
时才能正确读取这些值。但是,每当我们将保存处理程序设置为Redis时,将忽略这些php.ini值并使用默认的PHP值。我们的php.ini中的Redis行是:
session.save_handler = redis
session.save_path = tcp://127.0.0.1:6379?auth=noauth
我的想法是,可能有另一个参数我可以传递到session.save_path URL来设置密钥的TTL值,但是哪些参数有效的文档很少。有没有办法让Redis从php.ini中获取正确的TTL值?或者在URL中传递它的方法?
答案 0 :(得分:0)
我能够找到一种解决方法,但它仍然无法解释为什么Redis不会读取我的php.ini文件中的设置。相反,我能够更改代码中的设置并正确识别:
ini_set('session.gc_maxlifetime', 604800);
session_start();