我在apache服务器2.4.16上使用PHP 5.5.38。我有一个时间(大约25分钟)失去会话的问题。我在php.ini文件中找到了这些参数
session.gc_maxlifetime = 1440
session.gc_probability = 10
但是在代码中,这些已经设置为不同的值。代码看起来像这样
ini_set('session.gc_maxlifetime', 60*60*24*7);
ini_set('session.use_cookies', 1);
ini_set('session.gc_probability', 0);
我确认他们返回旧的值,这意味着它没有失败或什么的。
我不知道在哪里可以找到失去会话的原因。任何想法或建议将不胜感激。
答案 0 :(得分:1)
当您使用ini_set()
设置配置值时,它仅在当前脚本执行期间持续:
配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。
并且,当session.gc_maxlifetime
有多个值时,垃圾收集器将使用最低值:
如果不同的脚本具有不同的session.gc_maxlifetime值,但共享相同的位置来存储会话数据,那么具有最小值的脚本将清理数据。
因此,您需要做的是在每个页面中使用会话进行ini_set()
分配,或者更好的选择是直接修改php.ini
文件到你需要的价值。
请注意,25分钟大约是1440秒(24分钟),所以它绝对使用php.ini
的值。