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

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

Patricia Arquette
發布: 2024-12-09 12:00:25
原創
502 人瀏覽過

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

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