PHP ini_set会话gc_maxlifetime不起作用 [英] PHP ini_set session gc_maxlifetime not working
问题描述
我正在尝试在PHP中设置gc_maxlifetime.
I am trying to set gc_maxlifetime in PHP.
这是"header.php"中的代码,我在每一页中都包含了它.
Here is the code in 'header.php', and I include it every page.
ini_set('session.cookie_lifetime', 1);
ini_set('session.gc_maxlifetime', 1);
session_start();
我用
echo ini_get('session.gc_maxlifetime');
,并且确实设置为1.
但是它仍然保持登录状态,也就是说,会话未被删除.
But it still keep login status, that is, session has not been deleted.
可能的原因是什么?
推荐答案
为什么不运行垃圾回收?
Why doesn't Garbage Collection run?
GC并非总是在每个请求上运行,默认的PHP设置是有1%的机会运行GC. session.gc_probability
(默认1)/session.gc_divisor
(默认100)= 0.01(1%几率)
GC does not always run on every request, default PHP settings is that it is 1% chance to run GC. session.gc_probability
(default 1) / session.gc_divisor
(default 100) = 0.01 (1% chance)
相关手册条目: http://php.net/manual/zh-CN/session.configuration.php#ini.session.gc-概率
我的建议是存储上次触摸会话的时间,并在每次页面加载时检查该值,如果经过了足够的时间,请session_destroy
并将用户重定向到登录页面.
My suggestion is to store last time a session was touched and check against that value on every page load and if enough time has passed, session_destroy
and redirect user to login page.
这篇关于PHP ini_set会话gc_maxlifetime不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!