0

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

我将不胜感激,谢谢!

4

2 回答 2

1

甚至网络服务器(Apache,IIS,...)都有超时设置,请尝试检查您的许多默认设置为 300 秒)。

此外要小心 set_time_limit。来自手册:'当 PHP 在安全模式下运行时,此功能无效。除了关闭安全模式或更改 php.ini 中的时间限制之外,没有其他解决方法。

于 2013-02-18T16:11:15.227 回答
1

来自 PHP 手册:

调用时, set_time_limit() 从零重新启动超时计数器。换句话说,如果超时是默认的 30 秒,并且在脚本执行 25 秒后调用了诸如 set_time_limit(20) 之类的调用,则脚本将在超时之前总共运行 45 秒。

尝试:

set_time_limit(900);

不建议这样做set_time_limit(0);,因为您的 Web 服务器可能会施加 HTTP 超时,通常约为 5 分钟。

于 2013-02-18T16:12:13.977 回答