繁体   English   中英

以Web运行后台PHP脚本时出现超时问题

[英]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超时的问题。

set_time_limit 

不包括外壳执行时间。 http://php.net/manual/zh/function.set-time-limit.php

尝试在该站点的注释中使用代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM