从 PHP 执行多个 exec()
Executing multiple exec() from PHP
情况:
我有一个 PHP 应用程序,我需要从 exec()
命令中获取一些输出。
exec()
命令在整个应用程序的不同位置使用。
当用户在同一个浏览器中打开多个页面时,exec()
命令总是顺序执行;如果用户打开第二页,第二页会等待第一页的 exec()
命令完成,然后再执行。
如果我在不同的浏览器或隐身模式下打开第二个页面,则不会出现此问题。
Example test code:
$exec = "notepad.exe"
$data = shell_exec($exec);
echo $data;
当运行在浏览器中调用此代码时,浏览器会等待记事本进程关闭。当 运行 同时第二次调用脚本时,第二个记事本进程仅在第一个记事本进程关闭时启动,除非它 运行 来自不同的浏览器。
问题:
我怎样才能 运行 从同一个浏览器(在不同的选项卡中)同时发出多个 exec()
命令,同时仍然能够捕获输出。
在 Apache 2.4 运行ning PHP 5.4.7
上测试
问题与此处所述的会话的使用有关:
https://bugs.php.net/bug.php?id=44942
解决方法:
在使用会话时,我们需要调用 session_write_close();在 运行 任何 exec() 命令之前。
情况:
我有一个 PHP 应用程序,我需要从 exec()
命令中获取一些输出。
exec()
命令在整个应用程序的不同位置使用。
当用户在同一个浏览器中打开多个页面时,exec()
命令总是顺序执行;如果用户打开第二页,第二页会等待第一页的 exec()
命令完成,然后再执行。
如果我在不同的浏览器或隐身模式下打开第二个页面,则不会出现此问题。
Example test code:
$exec = "notepad.exe"
$data = shell_exec($exec);
echo $data;
当运行在浏览器中调用此代码时,浏览器会等待记事本进程关闭。当 运行 同时第二次调用脚本时,第二个记事本进程仅在第一个记事本进程关闭时启动,除非它 运行 来自不同的浏览器。
问题:
我怎样才能 运行 从同一个浏览器(在不同的选项卡中)同时发出多个 exec()
命令,同时仍然能够捕获输出。
在 Apache 2.4 运行ning PHP 5.4.7
上测试问题与此处所述的会话的使用有关: https://bugs.php.net/bug.php?id=44942
解决方法: 在使用会话时,我们需要调用 session_write_close();在 运行 任何 exec() 命令之前。