PHP ini_set session gc_maxlifetime 不工作

标签 php session ini-set

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

相关文章:

php - 油灰一段时间后停止响应

php - 如何在网站上嵌入谷歌财经历史图表?

angular - 当我执行 this.router.navigate 时,本地存储被清除

asp.net - 缓存 VS session VS cookie?

c# - HttpContext.Current.User 对于无状态 session 安全吗?

php - 即使使用 error_reporting(0),PHP 也会回显错误的原因是什么?

php - 在 PHP 中处理两个 mysql 连接

PHP 通知 : Undefined offset: 1 with array when reading data

php ini_set() 更改不会在安全模式关闭的情况下进行

php - 在PHP中还原默认错误报告