我的想法是啓動一個使用Symfony2 Process Class的我的世界服務器,並且想要實時給我提供反饋。所以,就像在Process cookbook part描述,我嘗試下面的代碼:Symfony2 Process doest't無法提供實時反饋
$process = new Process('sudo java -jar -Xms512M -Xmx1G ../server/minecraft_server.jar');
$process->setTimeout(null);
$process->run(function ($type, $buffer) {
if ('err' === $type) {
echo 'ERR > '.$buffer;
} else {
echo 'OUT > '.$buffer;
}
});
由於與Apache2的用戶我修改sudoers的一些權限問題的文件與此:www-data ALL = (myspecialUser) NOPASSWD: /usr/bin/java
所以www數據的用戶可以運行java命令。
服務器在後臺啓動,但我的問題是現在我沒有得到任何實時輸出。只有當我關閉(或殺死)Minecraft服務器進程時,我纔會得到輸出結果。
如何獲得實時輸出的任何建議?
哪裏是輸出去?如果它是一個文件,那麼你應該從一個動作中讀取文件內容並返回它,然後定期從ajax調用它到你的頁面上。 – jaudette
工作解決方案將重定向輸出爲標準錯誤。例如,這將適用於你:fprintf(STDERR,「ERR>%s」,$ buffer);但我不確定它是否是最佳解決方案 – Cyprian
不,這對我不起作用。我想我會寫一個啓動minecraft服務器的symfony任務(控制檯上的輸出正在工作) – F481