首頁 >後端開發 >php教程 >如何在背景執行長時間運行的 PHP 任務而不阻塞使用者介面?

如何在背景執行長時間運行的 PHP 任務而不阻塞使用者介面?

Linda Hamilton
Linda Hamilton原創
2024-12-31 18:33:10431瀏覽

How Can I Execute Long-Running PHP Tasks in the Background Without Blocking the User Interface?

在PHP 中執行後台程序

執行長時間運行的任務(例如目錄複製操作)如果阻塞使用者介面,可能會出現問題。本文探討了在背景執行此類任務的解決方案,為使用者提供無縫體驗。

正如所提供的答案中所建議的,Linux 環境為此提供了一種可靠的方法。 exec() 函數可讓您使用類似以下的語法在背景執行指令:

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

這裡,$cmd 代表要執行的指令。指令的輸出被重新導向到 $outputfile,而進程 ID 被寫入 $pidfile。這使您可以使用isRunning() 等函數來監視進程的進度和狀態:

function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %d", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}

透過採用這種方法,您可以在PHP 中無縫執行後台進程,從而最大限度地減少用戶中斷。

以上是如何在背景執行長時間運行的 PHP 任務而不阻塞使用者介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn