PHP EXEC命令(或类似)不等待结果

我有一个我想运行的命令,但是我不想让PHP坐下来等待结果。

<?php echo "Starting Script"; exec('run_baby_run'); echo "Thanks, Script is running in background"; ?> 

有没有可能让PHP不等待结果..即只是踢开,并移动到下一个命令。

我找不到任何东西,并不确定它甚至可能。 我能find的最好的就是有人在一分钟内开始CRON工作。

检查文档总是很好的 :

为了执行一个命令有它不会挂在你的PHP脚本,而它运行,你运行的程序不能输出回到PHP。 为此,将stdout和stderrredirect到/ dev / null,然后将其背景化。

> /dev/null 2>&1 &

为了执行一个命令,并将其作为另一个不依赖于apache线程继续运行的进程产生(不会因为某人取消页面而死掉)运行:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

您可以在后台运行该命令,在末尾添加&

 exec('run_baby_run &'); 

但是单独做这件事将会使您的脚本挂起,因为

如果一个程序以exec函数启动,为了继续在后台运行,程序的输出必须被redirect到一个文件或另一个输出stream。 如果不这样做将导致PHP挂起,直到程序执行结束。

所以你可以把命令的stdoutredirect到一个文件,如果你想稍后看到它,或者如果你想放弃它的话,可以把它/dev/null/dev/null

 exec('run_baby_run > /dev/null &'); 

好的,这里是最后的明确正确的获奖答案;-)

这使用wget通知URL的东西没有等待。

 $command = 'wget -qO- http://test.com/data=data'; exec('nohup ' . $command . ' >> /dev/null 2>&1 echo $!', $pid); 

这使用ls来更新日志而不用等待。

 $command = 'ls -la > content.log'; exec('nohup ' . $command . ' >> /dev/null 2>&1 echo $!', $pid); 

“exec nohup setsid your_command”

nohup允许your_command继续,即使启动的进程可能会先终止。 如果是这样,SIGNUP信号将被发送到your_command,使其终止(除非它捕获该信号并忽略它)。