我有一堆需要很长时间才能完成的脚本。 其中一些可能需要长达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')
最后两个尝试过的解决scheme已经被长期运行脚本有问题的其他人推荐,但是它根本没有帮助我。
注意:执行PHP脚本的Bash脚本是CakePHP的控制台应用程序。 我必须通过这个Bash脚本执行PHP脚本来利用CakePHP的所有function(模型,shell方法等)。 我需要能够通过浏览器调用Bash脚本,并让它在后台运行。
服务器是VPS,并安装了WHM / cPanel。
你需要增加最大的执行时间(小心,而设置0,这使得你的执行时间无限)
ini_set('max_execution_time', 0);
但我会推荐给用户
proc_open();
在exec(); 这将管道你的进程,你也可以定制其他进程。 阅读更多关于proc_open [HERE] http://www.sitepoint.com/proc-open-communicate-with-the-outside-world/ !
组:
ini_set('max_execution_time', 0);
在你的脚本的顶部。 这将禁用时间限制。 但是,在浏览器中执行20分钟的脚本没有什么意义。