2012-02-15 46 views
0

我正在嘗試使用php編寫基本上與交互式ssh系統,我需要使用ssh_exec或shell在遠程服務器上執行php命令並從命令中收集輸出實時。從ssh使用php運行的實時輸出

我已經搞砸了輸出緩衝和flush(),直到我在臉上藍色,我即將有命令將其輸出重定向到文件,並有一個單獨的腳本,用sftp查詢此文件的內容並使用jquery更新頁面上的輸出div。

就在我走下這條長長的蜿蜒路線之前,有沒有人有使用單一腳本工作的解決方案?

謝謝!

回答

0

會像下面的東西不起作用?

$output = shell_exec($theScript); 
file_put_contents($someFile, $output, FILE_APPEND); 

還是我得到了棒的錯誤結局?

2

有是沒有這樣的事情該有一個腳本可靠地工作:你在服務器端在緩存無法控制 - flush()可能會或可能不會如預期的工作取決於無論您使用mod_phpCGIFCGI或什麼,並且你完全不能控制客戶端的緩衝(IE在這裏臭名昭着)。

在那裏,做到了,用AJAX做到了。

+0

聽起來就像你已經走過了我開始的道路。你會友善地分享你的代碼嗎?高興地分享我的最終解決方案作爲一個網站! – Chrispy 2012-02-15 10:28:43

+0

或者,如果不是,你能概述一下你用ajax獲得結果嗎?我與之通話的服務器可能不是Web服務器,所以我不能只輸出到文件並使用http獲取,你會說執行常規sftp請求並將結果輸出到使用jquery的div是正確的解決方案嗎?這對我來說似乎很重! – Chrispy 2012-02-15 10:33:13

+2

我很想去,但我可能不會 - 現在屬於客戶。但這很簡單:我啓動了外部命令(在我的情況下它是一個長時間運行的導入腳本),並將輸出重定向到一個文件中,設置會話變量$ seek = 0。 Ajax等待500ms,從位置$ seek中讀取文件到最後,記住$ seek中的新位置,並將讀取的文本給出。 – 2012-02-15 10:34:09