php exec 命令(或类似命令)不等待结果
我有一个想要运行的命令,但我不希望PHP坐下来等待结果。
<?php
echo "Starting Script";
exec('run_baby_run');
echo "Thanks, Script is running in background";
?>
有没有可能让PHP不等待结果。即,只需将其踢开并移动到下一个命令即可。
我找不到任何东西,也不确定它是否可能。我能找到的最好的是有人在一分钟内完成CRON工作。
我有一个想要运行的命令,但我不希望PHP坐下来等待结果。
<?php
echo "Starting Script";
exec('run_baby_run');
echo "Thanks, Script is running in background";
?>
有没有可能让PHP不等待结果。即,只需将其踢开并移动到下一个命令即可。
我找不到任何东西,也不确定它是否可能。我能找到的最好的是有人在一分钟内完成CRON工作。
从文档中:
为了执行命令并使其在运行时不挂起PHP脚本
,您运行的程序不得输出回PHP。为此,请将
stdout 和 stderr 都重定向到 /dev/null,然后将其背景化。
> /dev/null 2>&1 &
为了执行命令并将其
生成为另一个不依赖于Apache线程
以保持运行的进程
(如果有人
取消页面,则不会死亡),请运行以下命令:
exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
您可以在后台运行该命令,方法是在其末尾添加 a,如下所示:&
exec('run_baby_run &');
但是,单独执行此操作会挂起脚本,因为:
如果程序是使用 exec 函数启动的,为了使它继续在后台运行,必须将程序的输出重定向到文件或其他输出流。如果不这样做,将导致PHP挂起,直到程序的执行结束。
因此,您可以将命令的 stdout 重定向到某个文件,如果您希望稍后查看该文件,或者如果要将其丢弃为:/dev/null
exec('run_baby_run > /dev/null &');