繁体   English   中英

如何在PHP中规避max_execution_time?

[英]How to circumvent the max_execution_time in PHP?

我尝试将邮件邮寄给许多订户。 我需要执行脚本很长时间 ,而max_execution_time允许的执行时间更长。 我可以使用Cron Tab ,它将按计划每次执行我的脚本,但是没有cron tab可以执行吗? 我尝试这样的事情:

    $maxTime = ini_get('max_execution_time');
    $startTime = time();
    foreach ($emails as $email) {
        if (time() < $startTime + $maxTime - 2) {
            // do something
        } else {
            // reload this page
        }
    }

它运行良好,但是如果我在浏览器选项卡中关闭此页面,它将死并且不会重新加载。 我提醒一下,我正在寻找没有Cron Tab的实现 我想手动开始执行一次,然后在后台运行它。

注意:另外,我还要注意,在此阶段,我不考虑服务器上的负载和发送邮件的可能间隔!

您有几种选择:

命令行最好的选择是在命令行上手动运行它。 命令行脚本对于运行长时间运行的进程要好得多。

Shell Exec如果必须通过浏览器运行它,则可以使用exec来触发命令行脚本,例如shell_exec('php -f /var/www/domain.com/myLongRunningProcess.php > /dev/null 2>/dev/null &')

忽略用户中止您也可以在将浏览器从浏览器会话中分离后运行程序。 这是最复杂,最难调试的,但是可以使用。 您必须计算页面的确切大小,然后发送输出并使用功能ignore_user_abort以便在浏览器脱离时脚本可以继续运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM