【求助】php sleep()导致所有网页都没响应了

alarmiss 2013-01-16 10:49:32
环境是 lnmp,我在代码中写了
sleep(60);
打开那个页面,60秒后才有输出,这个是正常的;
但是在这60秒内我网站中的其他网页也都是loading的状态,直到这个页面出现了,
其他页面才出现...

然后我在代码中,空循环了1000万次,发现如果那个页面没有执行完;
其他的页面也是loading的状态;这太诡异了...

小弟以前做java的,刚接触php不久,这太诡异了,请各位大大指点迷津
...全文
933 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽烛 2013-10-10
  • 打赏
  • 举报
回复
太感谢了,解决了大问题
alarmiss 2013-01-18
  • 打赏
  • 举报
回复 2
这两天比较忙 没时间上来 尝试了一下,确实是session文件锁的问题,我主动使用了 session_write_close(); 其他网页果然就能打开了,主要是这个项目喜欢用session来传递页面提示, 而我对于php的session实现没有什么认知 ok,结贴,感谢dream1206 的建议,一语中的,给分90。 剩下10分,见者有份了,谢谢大家的热心帮助。 话说,居然bz大人都被引来了,不是什么公司都可以上网聊天泡妹的好吧, 你以为我不想贴代码~~而且我如果无脑贴代码,你就真愿意看么 ok,谢谢大家一如既往的支持~~
  • 打赏
  • 举报
回复
引用 4 楼 alarmiss 的回复:
我也用了循环的,因为本来的打算是想让他每个循环休息几秒的, 但是不用循环,只sleep依然有这个问题。
问题应该出在你的循环代码里,有死循环嫌疑。 还不如不用循环,用类似这样的代码,最多增加一个HTTP连接。
//主代码区
if(){ //根据你的情况做判断,是否要继续执行
  sleep(5);
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);// curl重新打开你的当前页面,连接时间为1秒,1秒后便执行完所有代码,退出当前页面。
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,1); 
  curl_setopt($ch, CURLOPT_TIMEOUT ,1);
  curl_exec($ch);
  curl_close($ch);
}
xuzuning 2013-01-17
  • 打赏
  • 举报
回复
这种猜谜游戏一点都不好玩
alarmiss 2013-01-17
  • 打赏
  • 举报
回复
引用 2 楼 changjay 的回复:
具体代码是什么情况?有没有for, forreach循环?
我也用了循环的,因为本来的打算是想让他每个循环休息几秒的, 但是不用循环,只sleep依然有这个问题。 如果是 foreach(...){ ...... sleep(5); } 这样的代码有什么问题吗
alarmiss 2013-01-17
  • 打赏
  • 举报
回复
引用 1 楼 dream1206 的回复:
1. 程序里是否只有一句sleep()代码?是否有类似 session_start() ? 或者是你修改过php.ini开启了自动开启session. 如果是,那就是session文件锁导致 2. 你php-fpm中最大子进程是几个?如果只有一个,也会造成拥堵的状况
代码里面确实有session_start(). 但是我关闭浏览器,再重新打开,应该是新的session了吧,却一样打不开。 如果是session文件锁,怎么解决呢? php-fpm中MaxSpareServers的大小是35,不知道这个配置是否合理
  • 打赏
  • 举报
回复
具体代码是什么情况?有没有for, forreach循环?
改一下昵称 2013-01-16
  • 打赏
  • 举报
回复
1. 程序里是否只有一句sleep()代码?是否有类似 session_start() ? 或者是你修改过php.ini开启了自动开启session. 如果是,那就是session文件锁导致 2. 你php-fpm中最大子进程是几个?如果只有一个,也会造成拥堵的状况

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧