0

更新

所以我遇到了另一个我认为几乎相同的问题。我正在使用 silex,我希望会话存储 5 天。我给出了以下值:

session.cookie_lifetime: 432000
session.gc_maxlifetime: 432000
session.gc_probability: 100
session.gc_divisor: 100

因此,据我了解,由于概率和除数是相同的数字,gc 应该在每次页面加载时发生,并且会话文件(使用 php 本机文件处理程序进行会话)应该保持 432000(60 * 60 * 24 * 5)秒没有任何对他们的活动。即使有这些值,这个问题也是如此,我的会话似乎在 1-2 小时没有活动的情况下到期。

我什至尝试将 gc_maxlifetime 设置为 5,这似乎工作正常,所以这让我觉得在 gc_maxlifetime 之前触发了其他东西。

我还缺少其他值吗?

4

2 回答 2

0

服务器决定何时清除陈旧的会话。

这会在某些时候发生,具体取决于随机数和您给它的机会(在 php.ini 中)。

寻找 session.gc_divisor。

因此,在您的情况下,您的带有 PHPSESSID 的 cookie 仍然存在,并且您的浏览器按应有的方式将其发送到服务器,但服务器找不到相应的会话。

于 2012-10-09T14:47:24.580 回答
0

您还需要在 php.ini 中更改更多变量。检查此链接

于 2012-10-09T14:51:34.117 回答