ignore_user_abort(true)多长时间;坚持?

时间:2015-09-30 06:26:35

标签: php

我创建了一个不应该向浏览器返回任何内容的脚本(没有任何带有空格的回显,打印或中断,如?> <?,并使用ignore_user_abort(true);来避免这种情况,关闭浏览器窗口后,该过程将停止。

因此,一旦脚本启动,它应该一直持续到最后。

该脚本专为简报而设计,每隔5秒发送一封电子邮件,以通过mail();

尊重我的提供商的垃圾邮件政策

说,发生的事情是,工作约20分钟后(总电子邮件数为1002),脚本“崩溃”,没有返回错误。

因此我的问题是:使用ignore_user_abort(true);运行脚本是否存在生命周期限制?

修改 根据Hanky的建议(见下文),我把这行:

set_time_limit(0);

但问题仍然存在

2 个答案:

答案 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.phpphp -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封电子邮件,其中一封在通知完成后通知我。 它以透明的方式运行直到结束。

非常感谢您的支持