会话在大约25分钟后丢失一段时间

时间:2017-09-13 13:21:38

标签: php apache session configuration

我在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);

我确认他们返回旧的值,这意味着它没有失败或什么的。

我不知道在哪里可以找到失去会话的原因。任何想法或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

当您使用ini_set()设置配置值时,它仅在当前脚本执行期间持续:

  

配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。

并且,当session.gc_maxlifetime有多个值时,垃圾收集器将使用最低值:

  

如果不同的脚本具有不同的session.gc_maxlifetime值,但共享相同的位置来存储会话数据,那么具有最小值的脚本将清理数据。

因此,您需要做的是在每个页面中使用会话进行ini_set()分配,或者更好的选择是直接修改php.ini文件到你需要的价值。

请注意,25分钟大约是1440秒(24分钟),所以它绝对使用php.ini的值。