我制作了一个不应该向浏览器返回任何内容的脚本(没有任何回显、打印或带有空格的代码中断,例如 ?> <?
,并且使用 ignore_user_abort(true);
来避免这种情况,一旦浏览器窗口关闭,进程停止。
因此,一旦脚本启动,它就应该运行到最后。
该脚本是为时事通讯设计的,它每 5 秒发送一封电子邮件,以遵守我的提供商的垃圾邮件政策,通过 mail();
也就是说,发生的事情是在工作大约 20 分钟后(电子邮件总数为 1002 封),脚本“崩溃”,没有返回任何错误。
因此我的问题是:使用 ignore_user_abort(true);
运行的脚本是否有生命周期限制? ?
编辑 按照 Hanky(在下面)的建议,我写了一行:
set_time_limit(0);
但问题依然存在
最佳答案
因此,虽然 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
即可从命令行运行文件。
关于php - 多久 ignore_user_abort(true);坚持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859211/