任务调度执行时间与设置的不符
最近使用任务调度,已配置完成,但在执行的时候与预期结果相差很大,我配置的是每分钟执行一次,但通过日志查看却发现他是每秒执行了60次,查看配置没有发现什么错误;希望得到解决,谢谢
以下为代码:
protected function schedule(Schedule $schedule)\
{
$schedule->command('record:yun')->everyMinute();\
}
执行代码:/usr/bin/php /www/jue/artisan schedule:run >> /dev/null 2>&1
日志记录:

执行代码:

关于 LearnKu
命令里设置循环了?
@Epona 执行代码里面是有循环的,代码是这样写的
那出现这么多记录就不奇怪了,你可以试着把循环去掉试试,看看是不是只有一条记录
@Epona 他有循环不应该也是一分钟执行一次循环么
把
while(true)去掉试试@北哥 不是的,你
while(true)基本上就是一直执行下去了。@小下 行,明天我试一下,谢谢
@Epona 好的,我明天试一下,谢谢
@Epona 我试了一下,如果把 while(true) 这个循环去掉的话,整个调度任务就无法开启,但是日志里面有没有出现错误的信息 ,只能看开启的状态报的错误:
BACKOFF Exited too quickly (process log may have details)
@北哥 那是哪里代码没有执行到吧,逐步调试一下
这么多重复打印的日志,结合截图的代码,很怀疑是while(true)里面没有正确break导致。
While意义何在?
实际上我完全用不上while的,我只需要到时间查一次就行,有没有数据对我不影响的
$schedule->command('mail:send')->withoutOverlapping();
这个明显是 while(true) 导致的,因为里面一直在输出日志
这个问题是因为你用 supervisor 来执行 artisan schedule:run 如果执行的命令不是挂在前台的话,supervisor 会报这个错
所以用 crontab 来管理 artisan schedule:run 即可,如果你希望用 supervisor 来管理 artisan schedule:run, 可以使用下面的配置让 artisan schedule:run 始终在前台运行
@Kelvin 这个问题已解决,代码的原因,谢谢