簡體   English   中英

如何使用PHP的實時反饋運行shell腳本?

[英]How to run shell script with live feedback from PHP?

如何在向瀏覽器提供持續/實時反饋的同時從PHP執行shell腳本? 我從系統功能文檔中了解到:

如果PHP作為服務器模塊運行,system()調用還會嘗試在每行輸出后自動刷新Web服務器的輸出緩沖區。

通過將其作為“服務器模塊”運行,我不清楚它們的含義。

PHP代碼示例:

<?php

system('/var/lib/script_test.sh');

示例shell代碼:

#!/bin/bash

echo "Start..."
for i in {1..10}
do
        echo "$i..."
        sleep 1
done
echo "Done."

這樣做:它將等待大約10秒,然后刷新到輸出緩沖區。

我想要這樣做:在每行輸出后刷新到輸出緩沖區。

這可以使用popen()來完成,它為您提供了打開任何進程的標准輸出的句柄。 可以使用ob_flush()將數據塊發送到客戶端,可以使用XHR顯示數據。

一種選擇是寫入shell腳本中的文件,在每一步中說明它的位置。 在您的網頁上,每隔X秒/分鍾使用一次ajax調用。 ajax調用將調用PHP腳本,該腳本讀取狀態文件並返回狀態或已完成的步驟。

這種方法的優點是頁面實時信息可供多個訪問者使用,而不僅僅是實際啟動shell腳本的訪問者。 顯然,根據您的需要,可能會或可能不會。

當然缺點是ajax間隔越長,更新過期就越多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM