duanqianwei2485
duanqianwei2485
2013-04-25 09:41

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

已采纳

I have a script in PHP that I run from a CLI.

Inside the script I have the following loop:

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

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

}

What I am expecting to happen is that a new terminal will pop up and run my script and related arguments simultaneously in separate terminal windows.

Being able to visualize the data is simply for debugging. After I confirm that the script is working correctly, I want to run it in the background with this command:

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

However, neither is working as expected. The second command, even though it runs, it still waits for the first script to finish before it goes to the next iteration of the loop.

I'm using Ubuntu 12.04. How can I get these to run simultaneously for debugging, and then simultaneously and silently in the background when not?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • douyu0725 douyu0725 8年前

    Since you're running another PHP process, have you considered using fork?

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

    点赞 评论 复制链接分享
  • douan6931 douan6931 8年前

    A problem could be: The webserver is running under a different user than you. It doesn't know where the X-Server is and the X-Server usually doesn't allow connectiosn from different users. So you have to do two things:

    You have to make sure the DISPLAY variable is set when you run the gnome terminal from PHP. This should do it:

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

    You have to allow remote connections. You can do that with xhost + in a terminal running in your X-Session, but this will allow ALL connections, so be careful with it.

    点赞 评论 复制链接分享