多个exec命令php

时间:2011-08-10 14:48:21

标签: php

  

可能重复:
  php in background exec() function

我正在尝试从PHP运行两个exec命令。一个是可能运行几分钟的脚本,并且只能有一次它的实例。第二个exec只检查第一个进程是否正在运行,并允许您再次运行它或重定向您。代码是这样的。

这是主要过程

$command = '/home/user/active/Nem-Swd.elf 30 > /dev/null 2>&1 & echo $!';

这是检查另一个是否已经在运行的过程。

exec("ps ax | grep $name 2>&1", $output);

我知道在php API中它说:

  

如果使用此功能启动程序,为了使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。如果不这样做将导致PHP挂起,直到程序执行结束。

但我不明白这意味着什么。

1 个答案:

答案 0 :(得分:1)

这意味着如果运行exec命令而不重新路由其输出,则当前的PHP脚本将在终止脚本之前等待该命令完成。由于您将输出路由到标准输出,我相信您应该没问题。如果你刚刚运行exec($commandJob),那么就会遇到这个问题。


似乎已经回答了这个问题:
php in background exec() function

至少(例如)你需要这样做才能让它在后台运行:
exec("php test.php &");


还有其他方法可以启动可能值得研究的流程: http://www.php.net/manual/en/book.pcntl.php
http://php.net/manual/en/function.popen.php