【发布时间】:2011-04-03 14:45:15
【问题描述】:
这真的让我很烦。已经好几年了。无论我用 core.php 或 php.ini 做什么,我的登录都会在大约一个小时后超时——通常是这样。在相当长的一段时间后,一些相同代码和配置的部署超时。
这是我目前在一个站点上的内容 - 大约一个小时后超时:
session.gc_divisor 1000
session.gc_maxlifetime 86400
session.gc_probability 1
Configure::write('Session.timeout', '28800');
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'medium');
还有一个 - 持续了一整夜:
session.gc_divisor 100
session.gc_maxlifetime 14400
session.gc_probability 0
Configure::write('Session.timeout', '315360000');
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'medium');
现在,在你兴奋地说“嗯,答案就在 Session.timeout 值中”之前,让我告诉你,这个站点通常会在大约 20 分钟后超时!
【问题讨论】:
-
您的 cookie 设置的生命周期价值是多少?是 cookie 过期还是会话被垃圾收集的问题? (使用 Firebug 检查两者,是否在“网络”选项卡中发送/检索 cookie。)
-
只设置了两个 cookie:CAKEPHP 和 CakeCookie[lang]。它们都有很长的寿命(2035 年和 2011 年)。我目前正在调查某些图像和 css 404 可能会触发 Auth 的可能性。
-
关于此的一些新信息:会话没有被破坏,就像我尝试再次加载页面一样 - 使用后退按钮或重新输入 url - 无需登录即可正常加载. 我认为我的应用程序或蛋糕中发生了一些奇怪的事情。
-
设置
session.gc_probability = 0将意味着永远不会发生清理,因此会话将无限期持续(或直到 Cake 自己决定它们已过期)。
标签: php session cakephp timeout