首頁 > 後端開發 > php教程 > 如何從 PHP 中運行的進程獲取即時輸出?

如何從 PHP 中運行的進程獲取即時輸出?

Mary-Kate Olsen
發布: 2024-12-14 02:56:10
原創
797 人瀏覽過

How Can I Get Real-Time Output from Running Processes in PHP?

PHP 中運行進程的即時輸出

在Web 開發中,經常需要在伺服器上執行進程並顯示其進程即時輸出到客戶端。此功能對於監控系統資源、收集日誌或與外部工具整合等任務至關重要。

透過即時輸出執行指令

執行進程並在 PHP 中擷取其輸出,您可以使用 proc_open() 函數。此函數可讓您指定命令、輸入/輸出流以及執行進程的其他選項。以下範例示範如何使用 proc_open() 執行 'ping' 指令並串流其輸出:

$cmd = "ping 127.0.0.1";

$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";
登入後複製

在此腳本中,執行 'ping' 指令,並將其標準輸出重新導向至管線。此循環不斷從管道讀取並將輸出列印到網頁。

終止即時進程

載入頁面時,「ping」進程啟動並繼續運行直到頁面關閉。要在頁面卸載時正確終止進程,可以使用 proc_terminate() 函數:

proc_terminate($process);
登入後複製

該函數將向進程發送訊號以終止其執行。

以上是如何從 PHP 中運行的進程獲取即時輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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