如何在PHP中等待shell命令执行完成?

时间:2016-04-12 14:44:15

标签: php

我正在使用PHP执行长时间运行的shell命令。在一个php文件中,我调用一系列shell_exec函数来执行long runnable命令。

问题是什么,我在执行这些shell命令之前得到了响应。我认为那些shell_exec调用正在排队并在后台运行。

我需要的是php在完全执行所有shell命令之前不应该向我发送响应。

我尝试了exec和shell_exec函数,但同样的事情正在发生。

2 个答案:

答案 0 :(得分:0)

您可以使用输出缓冲http://php.net/manual/en/function.ob-start.php

首先你会打电话给:

ob_start();

一旦你完成了所有你要调用的流程

ob_end_flush();

如果你知道exec脚本已经完成,可以通过回调或同步。

编辑:这似乎与您的进程有关,并且可能是在获取异步的描述符时生成外部进程的更好方法:

PHP shell_exec update output as script is running

答案 1 :(得分:0)

shell_exec等待命令,所以,问题是,你认为,你将它调用到后台,也许是nohup?。

另外,出于同样的原因,de ob start,应该不起作用。

我认为,唯一的解决方案是调试/修改通过shell_exec调用的命令,并确保不会遇到后台。