我创建了一个不应该向浏览器返回任何内容的脚本(没有任何带有空格的回显,打印或中断,如?> <?
,并使用ignore_user_abort(true);
来避免这种情况,关闭浏览器窗口后,该过程将停止。
因此,一旦脚本启动,它应该一直持续到最后。
该脚本专为简报而设计,每隔5秒发送一封电子邮件,以通过mail();
说,发生的事情是,工作约20分钟后(总电子邮件数为1002),脚本“崩溃”,没有返回错误。
因此我的问题是:使用ignore_user_abort(true);
运行脚本是否存在生命周期限制?
修改 根据Hanky的建议(见下文),我把这行:
set_time_limit(0);
但问题仍然存在
答案 0 :(得分:2)
因此虽然ignore_user_abort(true);
会在访问者浏览某个页面后阻止脚本停止,但set_time_limit(0);
将删除该时间限制。您还可以在php.ini中更改PHP memory_limit,或者在.htaccess文件中设置php_value memory_limit 2048M
之类的内容。
为了列出默认的max_execution时间,您可以运行echo ini_get('max_execution_time');
(秒)或echo ini_get('memory_limits');
(兆字节)。
这就是说,听起来你的PHP脚本更适合从CLI运行。使用命令行可以运行PHP脚本,这听起来更适合您的使用情况,从您所描述的内容来看,脚本并不需要为Web浏览器提供任何内容。对于运行后台进程而不是将前端返回给用户而运行的PHP脚本,此方法更好。
只需运行php script.php
或php -f script.php
即可从命令行运行文件。
答案 1 :(得分:0)
最初没有办法解决这个问题。此外,提供商仍在调查。 同时按照你的建议,我能够让它运行。我创建了一个TEST文件并将其解雇以验证:
exec("/php5.5/bin/php -f /web/htdocs/www.mydomain.tld/home/test.php > /dev/null 2>&1 &");
在工作中。我设置了一个sleep(600);
,我发送了6封电子邮件,其中一封在通知完成后通知我。
它以透明的方式运行直到结束。
非常感谢您的支持