我一直试图解决这个有线的php会话问题已经有一段时间了。
安装程序:在IIS V6.0上运行,php for Windows V 5.2.6
问题: 在完全随机的时间,session_start()之后的下一个php行超时。 我有一个文件,auth.php,它包含在Extranet网站的每个页面上(用于检查有效登录)
auth.php
session_start();
if (isset($_SESSION['auth']==1) { <---- timesout here
do something ...
}
...
使用网站时,我会在第2行随机“超出30秒的最长执行时间”错误:if(isset($ _ SESSION ['auth'] == 1){
如果我将此脚本修改为
session_start();
echo 'testing'; <---- timesout here
if (isset($_SESSION['auth']==1) {
do something ...
}
...
随机错误现在也发生在第2行(echo'testing'),这是一个简单的echo语句,很奇怪。
看起来session_start()会随机导致出现问题,在它之后发生代码行会引发超时错误(即使是简单的echo语句)....
这发生在网站上的各种页面上(数据库密集,相对静态...),这使得难以排除故障。我一直在调整php.ini中的会话变量和超时,没有任何运气
有没有人遇到类似的事情,或者可以建议可以看的地方?
谢谢!
答案 0 :(得分:1)
快速搜索表明,如果您使用的是NTFS文件系统,则应该在使用session_write_close()时关闭会话。启动会话会锁定会话文件,因此在代码运行时没有其他文件可以访问它。出于某种原因,锁定有时在Windows / NTFS上无法自动释放,因此您应该在完成后手动关闭会话。