任务调度执行时间与设置的不符

最近使用任务调度,已配置完成,但在执行的时候与预期结果相差很大,我配置的是每分钟执行一次,但通过日志查看却发现他是每秒执行了60次,查看配置没有发现什么错误;希望得到解决,谢谢
以下为代码:

protected function schedule(Schedule $schedule)\
{
  $schedule->command('record:yun')->everyMinute();\
 }

执行代码:
/usr/bin/php /www/jue/artisan schedule:run >> /dev/null 2>&1

日志记录:

任务调度执行时间与设置的不符
执行代码:

任务调度执行时间与设置的不符

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 16
Epona

命令里设置循环了?

4个月前 评论

@Epona 执行代码里面是有循环的,代码是这样写的

file

4个月前 评论
Epona

那出现这么多记录就不奇怪了,你可以试着把循环去掉试试,看看是不是只有一条记录

4个月前 评论

@Epona 他有循环不应该也是一分钟执行一次循环么

4个月前 评论
善良的死神 4个月前
小下

while(true) 去掉试试

4个月前 评论
Epona

@北哥 不是的,你while(true)基本上就是一直执行下去了。

4个月前 评论

@小下 行,明天我试一下,谢谢

4个月前 评论

@Epona 好的,我明天试一下,谢谢

4个月前 评论

@Epona 我试了一下,如果把 while(true) 这个循环去掉的话,整个调度任务就无法开启,但是日志里面有没有出现错误的信息 ,只能看开启的状态报的错误:
BACKOFF Exited too quickly (process log may have details)

4个月前 评论
Epona

@北哥 那是哪里代码没有执行到吧,逐步调试一下

4个月前 评论

这么多重复打印的日志,结合截图的代码,很怀疑是while(true)里面没有正确break导致。

4个月前 评论

While意义何在?

4个月前 评论

实际上我完全用不上while的,我只需要到时间查一次就行,有没有数据对我不影响的

4个月前 评论

$schedule->command('mail:send')->withoutOverlapping();

4个月前 评论

通过日志查看每秒执行了 60 次

这个明显是 while(true) 导致的,因为里面一直在输出日志

BACKOFF Exited too quickly (process log may have details)

这个问题是因为你用 supervisor 来执行 artisan schedule:run 如果执行的命令不是挂在前台的话,supervisor 会报这个错

所以用 crontab 来管理 artisan schedule:run 即可,如果你希望用 supervisor 来管理 artisan schedule:run, 可以使用下面的配置让 artisan schedule:run 始终在前台运行

[program:laravel-scheduler]
command=/bin/sh -c "while [ true ]; do (php /var/www/artisan schedule:run --verbose --no-interaction &); sleep 60; done"
autostart=true
autorestart=true
4个月前 评论

@Kelvin 这个问题已解决,代码的原因,谢谢

4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!