调用session_start()后完全随机的超时

时间:2012-03-23 16:40:34

标签: php apache session iis

我一直试图解决这个有线的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中的会话变量和超时,没有任何运气

有没有人遇到类似的事情,或者可以建议可以看的地方?

谢谢!

1 个答案:

答案 0 :(得分:1)

快速搜索表明,如果您使用的是NTFS文件系统,则应该在使用session_write_close()时关闭会话。启动会话会锁定会话文件,因此在代码运行时没有其他文件可以访问它。出于某种原因,锁定有时在Windows / NTFS上无法自动释放,因此您应该在完成后手动关闭会话。