我的想法是用Symfony2 Process Class启动一个 minecraft 服务器,并希望实时向我提供反馈。因此,就像Process cookbook 部分中所述,我尝试以下代码:
$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-data 用户可以运行 java 命令。
服务器在后台启动,但我现在的问题是我没有得到任何实时输出。只有当我关闭(或杀死)我的世界服务器进程时,我才会得到输出。
任何建议如何获得实时输出?