导致 Apache 无限期挂起的 PHP session

标签 php windows apache session

问题是写入 session 的页面经常会导致 apache 永远挂起特定 session 。一旦某个用户发生此错误,对任何用户的任何 session 的任何进一步修改都将导致该用户的网站挂起。

几天来,这个问题一直是我唯一关注的问题。我有一个运行 Windows 2003 的开发 VPS 和使用标准 PHP session 处理程序的默认最新版本的 XAMPP。有问题的代码实际上可以在另外两台机器上正常运行,所以虽然我的常识说这是一个网络服务器配置问题,但在这一点上我愿意尝试任何事情。

经进一步调查,Apache、PHP 或系统事件日志中没有错误。资源丰富,没有“AJAX 狗屎 Storm ”,也没有超过每页向 session 写入几次。我还尽可能实现了 session_write_close() 以尝试帮助提升问题。

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

session 本身只包含 4 位信息。 ShoppingCartID、UserID、UserLevel 和 Refering URL 是字母数字,偶尔带有斜线。

我的 PHP.INI 的 session 部分是这样配置的:

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

我已经尝试了所有我能想到的方法,现在整个问题对我来说都变得模糊了。任何想法将不胜感激,感谢您花时间阅读本文:)

最佳答案

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

几乎想说它的锁定文件。

关于导致 Apache 无限期挂起的 PHP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705233/

相关文章:

php - 让 HABTM 关系在 CakePHP 中独一无二

php - 获得对亚马逊 FBA 数据库的访问权限

java - Solr 4.2 中的数据导入不起作用?

javascript - Google reCaptcha - 如何获得 g-recaptcha-response - 没有 FORM TAG

php - Laravel 路由 : same routes in two different route groups

Windows 10 作为主机 VMware Workstation 12 Player 无桥接适配器 (vmnet0)

未找到 PHP 类 'COM'

linux - 如何在 Linux 上创建 Windows 兼容的 rar sfx 存档

python-3.x - 对于共享 IP 地址的多个 Flask 站点,Certbot 证书不适用于 Apache

php - htaccess : How can I hide parts of the link?