在 PHP 中執行後台進程
執行耗時的進程(例如目錄複製)而不影響用戶體驗可能是一個挑戰。本文介紹了一種允許此類任務在背景運行的解決方案。
後台程序執行
要在不中斷使用者的情況下啟動目錄複製,請考慮以下步驟:
使用exec() 啟動指令:
使用exec啟動複製指令,將輸出重新導向至檔案 ($outputfile) 並將進程 ID 附加到另一個檔案 ($pidfile)。這確保了持續監控。
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
監控進程狀態:
實作 isRunning 函數以根據 PID 追蹤進程的狀態。
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中文網其他相關文章!