从PHP执行多个exec()

时间:2015-07-08 10:31:59

标签: php apache exec

情况:

我有一个PHP应用程序,我需要从exec()命令获取一些输出。 exec()命令用于整个应用程序的不同位置。

当用户在同一浏览器中打开多个页面时,exec()命令将按顺序执行;如果用户打开第二页,则第二页在执行之前等待第一页的exec()命令完成。 如果我在其他浏览器中打开第二页,或以隐身方式打开,则不会出现此问题。

Example test code:
$exec = "notepad.exe"
$data = shell_exec($exec);
echo $data;

在浏览器中运行此代码时,浏览器会等待记事本进程关闭。当第二次同时运行脚本时,第二个记事本进程仅在第一个记事本关闭时启动,除非它从不同的浏览器运行。

问题: 如何从同一个浏览器(在不同的选项卡中)同时运行多个exec()命令,同时仍能捕获输出。

在运行PHP 5.4.7的Apache 2.4上测试

1 个答案:

答案 0 :(得分:0)

该问题与此处所述的会话使用相结合: https://bugs.php.net/bug.php?id=44942

解决方案: 在使用会话时,我们需要调用session_write_close();在运行任何exec()命令之前。