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

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

Susan Sarandon
Susan Sarandon原創
2024-12-31 00:19:10602瀏覽

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中文網其他相關文章!

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