1

我有一个从 CLI 运行的 PHP 脚本。

在脚本中,我有以下循环:

foreach($array as $key => $value){

    exec("gnome-terminal -e php myscript.php $key $value > /dev/null");

}

我期望发生的是一个新的终端将弹出并在单独的终端窗口中同时运行我的脚本和相关参数。

能够可视化数据只是为了调试。在我确认脚本正常工作后,我想使用以下命令在后台运行它:

exec("php myscript.php $key $value" > /dev/null &);

但是,两者都没有按预期工作。第二个命令,即使它运行,它仍然等待第一个脚本完成,然后再进入循环的下一次迭代。

我正在使用 Ubuntu 12.04。我怎样才能让它们同时运行以进行调试,然后在不同时在后台静默运行?

4

2 回答 2

1

由于您正在运行另一个 PHP 进程,您是否考虑过使用 fork?

http://php.net/manual/en/function.pcntl-fork.php

于 2013-06-14T00:00:52.633 回答
0

问题可能是:网络服务器在与您不同的用户下运行。它不知道 X-Server 在哪里,而且 X-Server 通常不允许来自不同用户的连接。所以你必须做两件事:

当您从 PHP 运行 gnome 终端时,您必须确保设置了 DISPLAY 变量。这应该这样做:

exec("DISPLAY=":0" gnome-terminal -e php myscript.php $key $value > /dev/null &");

您必须允许远程连接。您可以xhost +在 X-Session 中运行的终端中执行此操作,但这将允许所有连接,因此请小心。

于 2013-04-25T09:51:45.420 回答