我正在尝试在PHP中设置gc_maxlifetime。
以下是' header.php'中的代码,我在每个页面都包含它。
ini_set('session.cookie_lifetime', 1);
ini_set('session.gc_maxlifetime', 1);
session_start();
我用
进行测试echo ini_get('session.gc_maxlifetime');
并且设置为1。
但仍然保持登录状态,即会话不已被删除。
可能的原因是什么?
答案 0 :(得分:5)
为什么不运行垃圾收集?
GC并不总是在每个请求上运行,默认的PHP设置是1%的机会运行GC。 session.gc_probability
(默认为1)/ session.gc_divisor
(默认为100)= 0.01(机率为1%)
相关手册输入:http://php.net/manual/en/session.configuration.php#ini.session.gc-probability
我的建议是存储上次触摸会话的时间,并在每次加载页面时检查该值,如果已经过了足够的时间,session_destroy
并将用户重定向到登录页面。