首頁 >後端開發 >php教程 >如何實現PHP Shell指令的即時輸出?

如何實現PHP Shell指令的即時輸出?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 00:41:11500瀏覽

How Can I Achieve Live Output from PHP Shell Commands?

使用popen() 和passthru() 使用PHP 進行即時輸出

PHP 的shell_exec() 函數允許您執行命令並捕獲其輸出。但是,使用 shell_exec() 或其他內建函數(如 system()、exec() 或 passthru())無法在命令執行期間即時顯示輸出。

對於即時輸出,請考慮使用 popen( ) 反而。它打開一個通往進程的管道,並允許您像檔案一樣讀取或寫入其輸入/輸出。

用於立即輸出的Passthru():

如果需要直接向使用者顯示輸出而不等待命令完成,可以使用passthru():

echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
';

Popen()用於即時輸出:

要在命令執行時即時顯示輸出,請使用 popen() 和while循環:

while (@ ob_end_flush()); // end output buffers

$proc = popen($cmd, 'r');
echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    @ flush();
}
echo '
';

此程式碼開啟指令的管道,以區塊的形式讀取其輸出,並將其顯示在

有用資訊:

  • 在迴圈之前呼叫session_write_close() 以防止會話問題。
  • 對於 nginx 後面的伺服器,新增標頭「X-Accel-Buffering: no」可防止 nginx 緩衝。
  • 請注意如果您的程式碼在同時更新會話的循環中運行,則即時輸出可能會造成破壞。

以上是如何實現PHP Shell指令的即時輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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