超时问题后台运行PHP脚本的Web
问题描述:
我有一个PHP脚本,做我正在尝试使用下面的代码断火作为后台脚本一些繁重的时候:超时问题后台运行PHP脚本的Web
exec("script.php > /dev/null 2> /dev/null &");
会发生什么:
当我运行上面的代码作为我的web应用程序的一部分,该脚本后约一分钟退出 。
当我运行的代码没有最后 符号我的web应用程序的一部分,作业精细运行 - 但
exec()
等待脚本 完全加载下一页,击败目的为用户盯着前一个没有反应的页面。当我使用最后的&符从控制台运行shell命令
script.php > /dev/null 2> /dev/null &
时,作业正常运行。当我作为web从控制台运行shell命令时,大约一分钟后作业停止运行。
我已经尝试将输出管道输送到日志文件:script.php > /home/public/tmp/output.txt 2> /home/public/tmp/errors.txt &
。输出看起来很正常,我没有得到任何错误。脚本停止工作。
基本规则似乎是:如果作为web运行为前台进程或作为我运行,它将完成。如果作为网站作为后台进程运行,大约一分钟后它将停止工作。
我没有将它作为cronjob运行,因为我的主机(NearlyFreeSpeech)每小时只能运行一次cronjob,这比我想让用户等待的时间只需要几分钟 - 这可能是因为当用户启动它时会发生火灾。
下标以set_time_limit(60 * 60 * 4);
开头,所以这不应该是PHP超时的问题。
尝试将您的输出管道输出到日志文件,以查看是否有错误或意外发生了'script.php> /tmp/script.log 2>&1&' –
试过了。它只是毫不客气地停下来。 – schnauss
60秒确实听起来像超时问题...尝试将'phpinfo()'转储到您的输出日志中,以确保'max_execution_time'正在由'set_time_limit()'调用更新? (托管公司可以限制你可以设置的防止对其他用户的不利影响) –