[英]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.