使用Xampp,php的会话超时不起作用

时间:2014-01-13 15:50:18

标签: php xampp session-timeout

我尝试将session.gc_maxlifetimephp.ini的值更改为较小的值,以便检查会话超时是否正常,但会话似乎永远不会过期。我还重新启动了apache来重新加载php.ini。 有谁知道原因是什么?

1 个答案:

答案 0 :(得分:0)

该指令名为session.gc_maxlifetime gc 前缀提供了一些如何工作的提示:PHP包含一个内置的垃圾收集过程,负责物理删除过时的会话数据从磁盘。但是这个过程并没有在每个PHP请求上启动,因为这是一个不必要的开销(即使一个HTML文档也可以触发执行几十个PHP脚本)。相反,它是随机执行的。这是由另外两个以“gc _”开头的指令控制的:

从手册中引用:

  

session.gc_divisor加上session.gc_probability定义了。{   gc(垃圾收集)过程开始的概率   每个会话初始化。概率通过使用来计算   gc_probability / gc_divisor,例如1/100意味着有1%的可能性   每个请求都会启动GC流程。

所有这些意味着在流程运行之前,您无法真正了解session.gc_maxlifetime是否得到尊重。如果你在本地开发盒中测试它,这个过程将运行很少次(不像你的实时服务器每分钟有数千次点击)。

强制它的一种快速方法是使gc_probability等于gc_divisor,因此概率变为1。