我在php中长时间使用sleep()函数时遇到问题,如果我测试下面的代码全部运行完美:
<?php
set_time_limit(0);
$i = 0;
while($i < 10) {
echo $i.'<br />';
if($i == 5){
echo 'sleeping 5 secs<br />';
sleep(5);
echo 'waking up<br />';
}
$i++;
}
?>
*****OUTPUT****
0
1
2
3
4
5
sleeping 5 secs
waking up
6
7
8
9
*****OUTPUT****
它睡了5秒钟,然后“醒来”没有问题地回应,但是,如果我提高脚本休眠的秒数,让我们说15分钟输出如下:
*****OUTPUT****
0
1
2
3
4
5
sleeping 900 secs //(15 mins)
*****OUTPUT****
脚本在睡了15分钟后似乎被杀了!!这可能是什么原因造成的?请注意,我使用set_time_limit(0)将max_execution_time标志设置为无穷大;在脚本的顶部。
我将不胜感激,谢谢!
答案 0 :(得分:1)
即使是网络服务器(Apache,IIS,...)也有超时设置,尝试检查你的很多人默认为300秒。
此外,请注意set_time_limit。从手册:'当PHP以安全模式运行时,此功能无效。除了关闭安全模式或更改php.ini中的时间限制外,没有其他解决方法。'
答案 1 :(得分:1)
从PHP手册:
调用时,set_time_limit()从零重新启动超时计数器。 换句话说,如果超时是默认的30秒,那么25 在脚本执行的几秒钟内,调用如set_time_limit(20) 制作完成后,脚本将在超时前运行45秒。
尝试:
set_time_limit(900);
建议不要执行set_time_limit(0);
,因为您的Web服务器可能会施加HTTP超时,通常大约为5分钟。