首頁 >後端開發 >php教程 >如何在 PHP 中非同步執行 Shell 腳本而不阻塞請求?

如何在 PHP 中非同步執行 Shell 腳本而不阻塞請求?

Linda Hamilton
Linda Hamilton原創
2024-12-23 18:05:16976瀏覽

How Can I Run a Shell Script Asynchronously in PHP Without Blocking the Request?

PHP 中的非同步Shell 執行:無需等待,只需執行

問題陳述:

設計一個PHP 腳本無縫呼叫shell 腳本,而不會影響PHP 請求的效能。與傳統的執行方式不同,此腳本不應該等待 shell 腳本完成,從而允許 PHP 請求獨立退出。

解決方案:

實現非同步shell 執行,採用以下技術:

  1. 呼叫進程後台: shell 腳本呼叫的「&」字元。這會將進程置於後台,允許 PHP 腳本繼續執行而無需等待完成。
  2. 重定向輸出和錯誤流: 將「> /dev/null 2>/dev/null」加入shell腳本呼叫。這會將標準輸出和錯誤流重定向到“/dev/null”,從而有效地丟棄它們。

這種組合語法可確保 shell 腳本在背景非同步執行,而不會延遲 PHP 請求。

範例:

exec("script.sh > /dev/null 2>/dev/null &");

替代語法:

另一個重新導向方法的替代方法是使用「&> /dev/null &」。這種方法透過在後台進程時將標準輸出和錯誤流重定向到“/dev/null”來實現相同的結果。

以上是如何在 PHP 中非同步執行 Shell 腳本而不阻塞請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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