PHP脚本120秒后没有反应

问题描述:

这一个真的让我难住。我没有在其他任何服务器上运行过这个问题。PHP脚本120秒后没有反应

这是在使用PHP 5.3.2-1ubuntu4.5的Ubuntu 10.04.1 LTS服务器上。

当我有一个PHP脚本超过120秒没有任何输出时,脚本不会显示任何后续输出;但是,任何非输出仍将被执行。这发生在php5-cgi & php5(cli)中。例如:

1. $iSleep = 120; 
2. echo 'Now: '.date('H:i:s')."\n"; 
3. echo 'Sleeping for: '.$iSleep."\n"; 
4. echo 'Will wake up at: '.date('H:i:s', (time()+$iSleep))."\n"; 
5. sleep($iSleep); 
6. echo 'Woke up at: '.date('H:i:s')."\n"; 
7. mail('[email protected]', 'Subject', 'Message'); 

我会得到所有的输出到屏幕通过4线6号线将永远不会出现在屏幕上,但我会从7行收到一封电子邮件,如果我改变1号线是代码将按预期完全执行。请让我知道是否有任何其他设置(php.ini)或您想知道的版本号。在此先感谢您的时间。

当我从其他客户端连接时,PHP似乎正常响应。我需要弄清楚是什么让我从不同的客户端连接起来。

我的答案也大多是猜测,但你有正常的max_execution_time变量。默认情况下,这是根据文档的30。但有一点需要注意:

最大执行时间不受系统调用,流操作等的影响。有关更多详细信息,请参阅set_time_limit()函数。

我肯定电子邮件()是一个系统调用,因此要使用set_time_limit描述。

希望这可以解决您的问题。

+0

这些都是我的主要嫌疑犯,当问题第一次出现时,但调整它们都没有帮助。 – Daniel 2010-10-20 03:20:24

+0

我的php.ini目前有max_execution_time = 0,它自己的脚本有set_time_limit(0); – Daniel 2010-10-20 03:21:10

+0

您是否曾尝试在其中添加一些flush()/ ob_flush()调用?可能会陷入Apache的某个地方 – 2010-10-20 18:18:50