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

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

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

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

日志记录:

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!