[英]Timeout issue when running background PHP script as web
我有一个PHP脚本,它会执行一些繁重的工作,因此尝试使用以下代码作为后台脚本启动:
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或我一样作为前台进程运行,它将完成。 如果作为Web作为后台进程运行,则大约一分钟后它将停止工作。
我没有将它作为cronjob运行,因为我的主机(NearlyFreeSpeech)每小时只能运行cronjobs一次,这比我希望让用户在工作仅花费几分钟的时间里等待的时间还多-当用户使用时,它可能会触发启动它。
下标以set_time_limit(60 * 60 * 4);
开头set_time_limit(60 * 60 * 4);
因此,这不应该是PHP超时的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.