0
我想在PHP中异步执行shell命令。即PHP不应该等待命令完成才能继续执行。然而,与Stackoverflow上关于该主题的大量问题相比,我确实关心程序的输出。我特别希望做这样的事情:PHP异步执行shell命令并检索实时输出
exec("some command", $output_array, $has_finished);
while(count($output_array) > 0 && !$has_finished)
{
if(count($output_array) > 0)
{
$line = array_shift($output_array);
do_something_with_that($line);
} else
sleep(1);
}
do_something_with_that($line)
{
echo $line."\n";
flush();
}
上面的代码将工作,如果exec
会立即返回,同时还添加元素的数组,如果有检查的过程中已经终止或者没有一种方法。
有没有办法做到这一点?
https://github.com/clue/php-shell-react或类似 –
您可以生成一个线程,做并检查该线程的状态。可能有很多资源可以检查。但是你不能用原生PHP做这件事,并且需要一个模块或库。 – apokryfos
@apokryfos [proc_open](http://php.net/manual/en/function.proc-open.php)是一个非常原生的PHP函数。 Libs使它更方便地使用它。 –