首頁 > 後端開發 > php教程 > 如何從 PHP Shell 指令執行取得即時更新?

如何從 PHP Shell 指令執行取得即時更新?

DDD
發布: 2024-12-01 04:36:16
原創
812 人瀏覽過

How Can I Get Live Updates from PHP Shell Command Execution?

具有即時更新的PHP Shell 輸出

PHP 提供了多個執行shell 指令的函數,包括shell_exec、exec、system和passthru。但是,這些函數通常會等到命令完成後再顯示結果。如果您希望在執行過程中查看指令的即時輸出,請考慮以下替代方案:

選項1:使用popen() 進行並行執行

popen()函數在PHP 腳本和執行shell 命令的單獨進程之間開啟一個管道。這允許您的腳本與進程交互,即時讀取其輸出。

<?php
$cmd = 'ping -c 10 127.0.0.1';
$proc = popen($cmd, 'r');

echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    flush();
}
echo '
'; ?>
登入後複製

此程式碼執行 ping 命令並在其可用時顯示其輸出。

選項2:使用passthru() 進行即時輸出

passthru() 函數直接將指令的輸出傳送到使用者的瀏覽器,讓您跳過即時更新並在結果出現時顯示結果。

<?php
echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
'; ?>
登入後複製

最佳化提示:

  • 透過呼叫停用會話緩衝session_write_close() 以防止其乾擾並行執行。
  • 設定 header如果您的伺服器位於 nginx 閘道後面,則「X-Accel-Buffering: no」以防止 nginx 中斷即時輸出。

透過使用這些技術,您可以啟用 shell 命令輸出的即時更新您的 PHP 腳本,增強使用者體驗並提供對命令執行的即時洞察。

以上是如何從 PHP Shell 指令執行取得即時更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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