获取SSH输出"当它发生"通过PHP


Getting SSH output "as it happens" via PHP?

我已经使用像Fabric (Python)这样的库在远程服务器上执行各种任务。当我通过这个库运行任务时,当操作发生时,我从远程服务器获得输出。例如,如果任务在服务器上执行一个git pull,我就会得到它的逐行输出。

然而,当我看到各种PHP SSH库和SSH2扩展。似乎只有一种方法可以在已经发生后从命令中获得所有输出,在一个长字符串中。我希望在任务运行时从远程服务器得到反馈输出。这可能吗?在伪代码中,这就是我要找的:

Server::run('git pull origin master', function($output)
{
     echo $output.PHP_EOL;
});

开始工作了。您可以在循环中使用fgets读取ssh2_exec返回的流。

可以在每次echo后调用flush()

http://php.net/manual/en/function.flush.php