简单起见:
通过经典网址调用调用script.php时,ini_set(“max_execution_time”)工作
当从另一个php脚本/进程通过exec()函数运行script.php时,ini_set(“max_execution_time”)不起作用。
现在,我的解决方案不仅仅是继续选项1,因为它可以正常工作,因为即将激活script.php的exec()函数和几个类似的函数通过(外部)cron作业调用。
有谁知道发生了什么?
如果是以下帮助,则激活代码:
exec('/usr/bin/env php ./script.php');
sleep(30);
exec('/usr/bin/env php ./script2.php');
激活脚本和script2.php,当ini_set()返回FALSE时,它们都会失败。
答案 0 :(得分:1)
正如Barmar指出的那样,有几个用于php的INI文件。至少一个用于CGI,一个用于CLI。你也可以通过ini_set或.htaccess里面设置一些东西。 有一些配置文件定义了哪些设置可能在哪里更改。安静可能不允许您在CLI脚本中修改max_execution_time。如果我没记错的话,默认情况下它应该是0也是无限的。
答案 1 :(得分:1)
如上所述Barmar,两个版本使用不同的PHP.ini文件。
CLI版本是否以安全模式运行?
在安全模式下,可能无法在运行时使用ini_set()设置max_execution_time。此外,CLI版本的执行时间限制默认为0。
答案 2 :(得分:0)
使用set_time_limit(seconds)代替ini_set()
答案 3 :(得分:0)
如果启用了它,则可能是 xdebug ,因为它默认将时间设置为0(以防止在设置断点时脚本超时)。可能会将其锁定为0。这是我的问题。