簡體   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