我正在使用PHP执行长时间运行的shell命令。在一个php文件中,我调用一系列shell_exec函数来执行long runnable命令。
问题是什么,我在执行这些shell命令之前得到了响应。我认为那些shell_exec调用正在排队并在后台运行。
我需要的是php在完全执行所有shell命令之前不应该向我发送响应。
我尝试了exec和shell_exec函数,但同样的事情正在发生。
答案 0 :(得分:0)
您可以使用输出缓冲http://php.net/manual/en/function.ob-start.php
首先你会打电话给:
ob_start();
一旦你完成了所有你要调用的流程
ob_end_flush();
如果你知道exec脚本已经完成,可以通过回调或同步。
编辑:这似乎与您的进程有关,并且可能是在获取异步的描述符时生成外部进程的更好方法:
答案 1 :(得分:0)
shell_exec等待命令,所以,问题是,你认为,你将它调用到后台,也许是nohup?。
另外,出于同样的原因,de ob start,应该不起作用。
我认为,唯一的解决方案是调试/修改通过shell_exec调用的命令,并确保不会遇到后台。