在Ubuntu中如何从PHP执行多个同时终端?

时间:2013-04-25 09:41:31

标签: ubuntu php

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

在脚本中我有以下循环:

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。我怎样才能让它们同时运行以进行调试,然后在后台同时静默运行?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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