可能重复:
php in background exec() function
我正在尝试从PHP运行两个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挂起,直到程序执行结束。
但我不明白这意味着什么。
发布于 2011-08-10 14:59:40
这意味着,如果您运行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
https://stackoverflow.com/questions/7012770
复制相似问题