【问题标题】:Executing multiple exec() from PHP从 PHP 执行多个 exec()
【发布时间】:2015-07-08 10:31:58
【问题描述】:

情况:

我有一个 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 上测试

【问题讨论】:

    标签: php apache exec


    【解决方案1】:

    问题是与使用会话有关,如下所述: https://bugs.php.net/bug.php?id=44942

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

    【讨论】:

      猜你喜欢
      • 2012-05-27
      • 2023-01-13
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2013-09-07
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多