我有一个我想要运行的命令,但我不希望PHP等待结果.
<?php
echo "Starting Script";
exec('run_baby_run');
echo "Thanks, Script is running in background";
?>
有没有可能让PHP不等待结果..即只是启动它并移动到下一个命令.
我找不到任何东西,也不确定它是否可能.我能找到的最好的是有人在一分钟内开始CRON工作.
Cri*_*ian 113
检查文档总是好的:
为了执行一个命令让它在运行时不挂起你的php脚本,你运行的程序一定不能输出回php.为此,将stdout和stderr重定向到/ dev/null,然后将其背景化.
>
/dev/null 2>&1 &为了执行命令并将其作为另一个不依赖于apache线程继续运行的进程(如果有人取消该页面将不会死亡)运行,请运行以下命令:
exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
cod*_*ict 48
您可以在后台运行命令,&在其末尾添加a :
exec('run_baby_run &');
但单独执行此操作会挂起您的脚本,因为:
如果程序是使用exec函数启动的,为了使程序继续在后台运行,必须将程序的输出重定向到文件或其他输出流.如果不这样做将导致PHP挂起,直到程序执行结束.
因此,您可以将命令的标准输出重定向到文件,如果您想稍后查看,或者/dev/null如果要将其丢弃为:
exec('run_baby_run > /dev/null &');
我知道这个问题已经得到解答,但我在这里找到的答案不适用于我的场景(或 Windows)。
我正在使用 Windows 10 笔记本电脑和 Xampp v3.2.4 中的 PHP 7.2。
$command = 'php Cron.php send_email "'. $id .'"';
if ( substr(php_uname(), 0, 7) == "Windows" )
{
    //windows
    pclose(popen("start /B " . $command . " 1> temp/update_log 2>&1 &", "r"));
}
else
{
    //linux
    shell_exec( $command . " > /dev/null 2>&1 &" );
}
这对我来说非常有效。
我希望它能对使用 windows 的人有所帮助。干杯。
小智 8
这使用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);
| 归档时间: | 
 | 
| 查看次数: | 92342 次 | 
| 最近记录: |