PHP sleep()函数在一段时间后查杀脚本

时间:2013-02-18 16:05:32

标签: php

我在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标志设置为无穷大;在脚本的顶部。

我将不胜感激,谢谢!

2 个答案:

答案 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分钟。