3

我正在尝试在 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。

但它仍然保持登录状态,即会话没有被删除。

可能的原因是什么?

4

1 回答 1

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然后将用户重定向到登录页面。

于 2014-03-19T07:15:30.710 回答