我在工作中运行的PHP站点出现问题,几分钟后用户正在注销(确切的时间有所不同,但它经常出现问题),无论他们是否积极使用该站点或不.
困难在于我无法重现这个问题,如果我使用相同的浏览器登录我不会被注销,这表明这不是网站完全被破坏的情况.不幸的是,我无法访问用户计算机来运行任何流量嗅探软件.
我已经检查的东西是:
PHP中的会话设置是Debian默认值,并且未在.htaccess文件或其他任何位置更改.主要是:
session.cookie_lifetime 0
session.gc_divisor 100
session.gc_maxlifetime 1440
session.gc_probability 0
session.save_handler files
session.save_path /var/lib/php5
session.use_cookies On
Run Code Online (Sandbox Code Playgroud)
Debian通过cron作业删除会话,而不是使用PHP的垃圾收集器,这就是为什么gc_probability被设置为0.我们运行的PHP版本是:PHP 5.2.6-1 + lenny13与Suhosin-Patch 0.9.6.2(cli) (Lenny的最新版本,我们很快就会升级到Squeeze,但我不认为这是导致问题的原因).
我们使用Zend_Session来管理会话,并在每个页面上创建一次Zend_Session_Namespace实例,从而自动调用session_start().通过在注销页面上调用Zend_Session :: destroy()来清除会话,因此用户应该注销的唯一方法是:
查看用户是否已登录的检查包括:
任何人都可以建议我可以试试的其他事情
编辑:我根据评论留下的一些额外的事情:
编辑2:基于人们提出的其他问题:
最后,答案是废弃会话并编写我自己的非常简单的 cookie 代码,该代码与会话的不同之处如下:
这不是一个理想的情况,因为需要重新发明轮子,但我的小解决方案似乎可以在 PHP 会话无法工作的地方工作,并且拥有一个工作站点是最重要的。
| 归档时间: |
|
| 查看次数: |
4779 次 |
| 最近记录: |