2017-06-09 15 views
0

我正在使用Linux服務器,並在那裏運行幾個shell腳本執行任務,如升級軟件包等等,而不是ssh到服務器並運行腳本我正在創建一個Web用戶界面,通過它可以執行腳本,我正在使用PHP shell_exec()函數來執行腳本。在啓動和完成server.log文件中特定軟件包之前添加了日誌。獲取生活Linux服務器日誌在網頁

我想在網頁上實時顯示這些日誌。

什麼是最有效的方法來做到這一點?

我可以運行一個無限循環來檢查文件被修改或不(不會是有效的)

感謝您的幫助!

回答

0

要讀取進程的輸出,popen()是要走的路。您的腳本將與程序並行運行,您可以通過讀取和寫入它的輸出/輸入來進行交互,就像它是一個文件一樣。

但如果你只是想拋售它直接導致用戶可以胡謅和使用passthru()

echo '<pre>'; 
passthru($cmd); 
echo '</pre>'; 

現在如果你想爲程序進入到在運行時顯示的輸出,你可以這樣做:

while (@ ob_end_flush()); // end all output buffers if any 

$proc = popen($cmd, 'r'); 
echo '<pre>'; 
while (!feof($proc)) 
{ 
    echo fread($proc, 4096); 
    @ flush(); 
} 
echo '</pre>'; 

該代碼應運行該命令,並在運行時將輸出直接推送給最終用戶。