加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

通过exec()调用时,长时间运行的PHP脚本会停止,但在通过CLI调用时

发布时间:2020-12-13 22:52:00 所属栏目:PHP教程 来源:网络整理
导读:我有一堆脚本需要很长时间才能完成.其中一些可能需要20分钟. 有一个执行这些PHP脚本的Bash脚本.当我以root身份通过CLI调用此Bash脚本时,所有PHP脚本都会完成而没有任何问题.但是当我通过浏览器使用PHP的exec()函数调用Bash脚本时,脚本会在7/8分钟后突然停止
我有一堆脚本需要很长时间才能完成.其中一些可能需要20分钟.

有一个执行这些PHP脚本的Bash脚本.当我以root身份通过CLI调用此Bash脚本时,所有PHP脚本都会完成而没有任何问题.但是当我通过浏览器使用PHP的exec()函数调用Bash脚本时,脚本会在7/8分钟后突然停止而不会抛出任何错误.

对通过Apache / PHP执行的进程或脚本运行的时间有一定的限制吗?

我试过了:

> set_time_limit(0)
> exec(‘nohup / path / to / bashscript’)
> exec(‘/ path / to / bashscript | at now’)

最后两个尝试过的解决方案已被其他遇到长期运行脚本问题的人推荐,但它对我没有任何帮助.

注意:
执行PHP脚本的Bash脚本是CakePHP的控制台应用程序.我必须通过这个Bash脚本执行PHP脚本,以利用CakePHP的所有功能(模型,shell方法等).我需要能够通过浏览器调用Bash脚本,并让它在后台运行.

服务器是VPS并安装了WHM / cPanel.

解决方法

你需要增加最大执行时间(设置为0时小心,它会使你的执行时间无限)

ini_set('max_execution_time',0);

但我会向用户推荐

proc_open();

over exec();
这将管道您的进程,您也可以排除其他进程.读
更多关于proc_open [HERE] http://www.sitepoint.com/proc-open-communicate-with-the-outside-world/的信息!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读