/dev/null 2>/dev/null &"); 发生了什么: 当我将上-6ren">
gpt4 book ai didi

php - 以 Web 方式运行后台 PHP 脚本时出现超时问题

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:58 25 4
gpt4 key购买 nike

我有一个 PHP 脚本,它执行一些繁重的工作,我试图使用以下代码将其作为后台脚本启动:

exec("script.php >/dev/null 2>/dev/null &");

发生了什么:

  • 当我将上面的代码作为我的网络应用程序的一部分运行时,脚本退出大约一分钟后。

  • 当我将代码作为我的网络应用程序的一部分运行时,没有最终的& 符号,作业运行良好 - 但 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); 开头,因此这不应该是 PHP 超时的问题。

最佳答案

set_time_limit 

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

尝试使用该网站评论中的代码示例。

关于php - 以 Web 方式运行后台 PHP 脚本时出现超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com