2010-12-06 76 views
1

我想弄清楚如何在命令行上由PHP啓動的進程中實時顯示輸出(和讀取輸入)。似乎有很多替代品: shell(), exec(), system(), popen(), proc_open()實時運行進程

並且我不完全清楚有什麼區別。我需要的只是執行一個進程,在調用PHP腳本的同一終端上顯示其輸出,可能會讀取輸入,並在進程退出時最終返回到PHP腳本流。我列出的選項proc_open()可能可以做到這一點,但似乎有點矯枉過正,因爲我想要做的就是控制外部進程並等待它完成。

有一些問題似乎有關,但據我所見,他們實際上是關於在後臺發送進程(我不想)或在瀏覽器中顯示輸出結果(這不是我的情況,一切在終端中)。

+1

你可以規範出你的「實時」是什麼意思?這會使你得到的答案有所不同。例如,就核電廠的控制系統而言,人類感知的「實時」與「實時」不同。 – rcravens 2010-12-06 14:47:07

+0

我的意思是用戶感知的實時。關鍵是,例如,shell()將在完成時將進程的所有輸出結合在一起。 – Andrea 2010-12-06 14:53:33

回答

2

使用pcntl_fork()pcntl_exec()this

0

也許谷歌代碼搜索可以幫助。據我所知它正在做一些與你正在尋找的東西非常相似的東西,包括從STDOUT獲取輸出,並且(可能)通過STDIN提供輸入。