我正在尝试在 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。
但它仍然保持登录状态,即 session 没有被删除。
可能的原因是什么?
最佳答案
为什么垃圾收集不运行?
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 的时间,并在每次加载页面时检查该值,如果时间足够长,session_destroy
并将用户重定向到登录页面。
关于PHP ini_set session gc_maxlifetime 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496324/