2010-04-24 37 views
4

问题是每隔一段时间写入一个会话的页面都会导致Apache永久挂起以进行特定会话。一旦此用户发生此错误,任何用户的任何会话的任何进一步修改都将导致该用户的网站挂起。导致Apache无限期挂起的PHP会话

这个问题一直是我唯一关注的日子。我有一个使用标准PHP会话处理程序运行Windows 2003和默认最新版本的XAMPP的开发VPS。有问题的代码实际上通常运行在另外两台机器上,虽然我的常识说这是一个web服务器配置问题,但在这一点上,我愿意尝试任何东西。

在进一步调查中,Apache,PHP或系统事件日志中没有错误。资源丰富,不存在“AJAX垃圾风暴”,或者不止一对夫妇写入每页会话。我也尽可能地实现了session_write_close()来尝试并帮助提升问题。

我检查了设置为“C:\ windows \ Temp”的会话目录,发现一旦用户进入挂起阶段,相应的会话文件被独占锁定,解决此问题的唯一方法是停止Apache并等待一会儿文件解锁并删除它们。我不知道是否需要删除。

会话本身只包含4位信息。 ShoppingCartID,UserID,UserLevel和Refering URL,并且是偶尔用斜杠的字母数字。

我的php.ini的会话部分配置是这样的:

session.save_handler = files 
session.save_path = "C:\WINDOWS\Temp" 
session.use_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 100 
session.gc_maxlifetime = 1440 
session.bug_compat_42 = 1 
session.bug_compat_warn = 1 
session.referer_check = 
session.entropy_length = 0 
session.entropy_file = 
session.cache_limiter = nocache 
session.cache_expire = 180 
session.use_trans_sid = 0 
session.hash_function = 0 
session.hash_bits_per_character = 4 

我已经试过所有我能想到的,现在整个问题是模糊了我。任何想法将不胜感激,并感谢您的阅读时间:)

+0

不需要删除会话文件。一旦apache重新启动,你实际上可以继续进行会话。 – Kmaid 2010-04-25 20:18:16

+0

我在Apache/Linux安装上遇到完全相同的问题,您是否曾找到解决方案? – Rowan 2010-07-26 12:55:23

+0

是的,我做了新的安装一切都很好>> – Kmaid 2010-11-24 23:28:53

回答

1

它可能是您的会话文件被Windows锁定或某些php.ini设置未正确完成。请SEE HERE

几乎要说它的锁文件。

+0

除了save_path之外,php会话设置是默认设置,这只是共享服务器上的安全风险,事实并非如此。 – Kmaid 2010-04-25 20:15:07

0

您的应用程序可能在内部再次从内部请求同一网站的页面吗?你可能会遇到A页面启动的争用情况,锁定会话,然后以某种方式触发对自己的请求,或页面B,它也尝试重新启动会话,该会话现在被锁定,并且请求挂起。

否则,如果挂是由会话文件被锁定,我建议使用像SYSInternal的“Handle”的东西来获得哪些进程正在使用有问题的会话文件的列表。

+0

这是不可能的。有几个包含但不包含包含,并且设置了最大执行时间。 我99%肯定它的apache或PHP,当它停止并启动apache服务后,它就会锁定它。无论如何我会验证这一点。 – Kmaid 2010-04-25 15:59:29

+1

我也有过这个问题Marc B.我没有找到工作,我使用的是centos/unix。我只是改变了我的应用程序,以便它不使用该部分的会话 – Jason 2011-02-14 23:48:05

+0

这也是我解决我的问题的方式。反思会议经理可能值得尝试memcache – Kmaid 2012-02-28 14:23:29