首頁 >後端開發 >php教程 >如何在不阻塞的情況下非同步執行 PHP 命令?

如何在不阻塞的情況下非同步執行 PHP 命令?

Patricia Arquette
Patricia Arquette原創
2024-12-09 12:00:25543瀏覽

How to Run PHP Commands Asynchronously Without Blocking?

如何執行PHP 指令而不等待結果

在PHP 中,exec 指令可以執行外部指令,但預設情況下,PHP 會等待以便命令在繼續之前完成。然而,在某些情況下,我們希望啟動一個命令並繼續執行其他任務,而不等待結果。

解決方案:

PHP 文件提供了一個解決方案不阻塞地執行指令:

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');

這個指令:

  1. 執行run_baby_run 指令。
  2. 將其標準輸出和標準錯誤重定向到 /dev/null,抑制命令的任何輸出。
  3. 將指令,建立一個獨立於PHP 運行的單獨進程

分離進程的替代解決方案:

將進程與Apache線程分離並確保即使PHP腳本終止它也能繼續執行,使用此指令:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

這個指令:

  1. 啟動 bash 工作階段。
  2. 執行 nohup 以防止呼叫腳本退出時進程終止。
  3. 設定新的會話 ID (setsid)將進程與目前進程分開。
  4. 將輸出抑制為之前。

以上是如何在不阻塞的情況下非同步執行 PHP 命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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