首頁 > 後端開發 > php教程 > 如何在 PHP 中非同步執行 Shell 指令?

如何在 PHP 中非同步執行 Shell 指令?

Susan Sarandon
發布: 2024-12-31 00:19:10
原創
587 人瀏覽過

How Can I Execute Shell Commands Asynchronously in PHP?

在PHP 中非同步執行Shell 指令

使用PHP 執行shell 腳本時,通常希望在不阻塞PHP 執行的情況下執行非同步操作。這對於不應延遲 PHP 請求的冗長進程特別有用。

雖然 PHP 提供了各種用於 shell 執行的函數,包括 exec()、shell_exec() 和 pcntl_fork(),但沒有一個直接提供所需的功能異步行為。但是,有幾種方法可以模擬它。

使用帶有'&' 的後台進程**

如果PHP 腳本不關心來自shell 腳本,可以使用& 運算子在後台執行:

exec('path/to/script.sh &');
登入後複製

該指令在單獨的進程中立即執行腳本返回PHP 腳本,允許其繼續執行。

重定向標準輸出與錯誤(/dev/null)

完全抑制shell 腳本的輸出、> /dev/null 2>/dev/null & 表達式可以附加到exec() 指令:

exec('path/to/script.sh > /dev/null 2>/dev/null &');
登入後複製

這會將標準輸出(stdout) 和標準錯誤(stderr) 重定向到 /dev/null ,有效地隱藏 PHP 請求中的腳本輸出。

替代重定向語法

重定向輸出的另一種語法是使用&> /dev/null &:

exec('path/to/script.sh &> /dev/null &');
登入後複製

這與> 的效果相同; /dev/null 語法,但將重定向與後台結合在一個表達式中。

透過實作這些技術,PHP 腳本可以非同步執行 shell 腳本,允許 PHP 請求繼續執行,而無需等待 shell 腳本完成。

以上是如何在 PHP 中非同步執行 Shell 指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板