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描述。
希望这可以解决您的问题。
这些都是我的主要嫌疑犯,当问题第一次出现时,但调整它们都没有帮助。 – Daniel 2010-10-20 03:20:24
我的php.ini目前有max_execution_time = 0,它自己的脚本有set_time_limit(0); – Daniel 2010-10-20 03:21:10
您是否曾尝试在其中添加一些flush()/ ob_flush()调用?可能会陷入Apache的某个地方 – 2010-10-20 18:18:50