Laravel任务调度无缘无故地每分钟执行一次

Fra*_*cas -1 php cron laravel

我已经设置了一个命令,该命令必须在每月的最后一天运行一次。这是我的方法:

$schedule->command('report:send')->when(function () {
    return Carbon::now()->endOfMonth()->isToday();
});
Run Code Online (Sandbox Code Playgroud)

今天是一个月的最后一天,因此效果很好。但问题是此命令每分钟执行一次。因此,每分钟我都会在收件箱中收到一封电子邮件:/

是否有可能因为我->everyMinute();在测试时使用过并且必须刷新设置而发生这种情况?

cba*_*ier 6

每次cron启动时都会测试该命令。我相信您的Cron会每分钟执行一次,并且由于这一天命令返回true,所以它将每分钟执行一次。

您可以做的是:

$schedule->command('report:send')->daily()->when(function () {
    return Carbon::now()->endOfMonth()->isToday();
});
Run Code Online (Sandbox Code Playgroud)

要么

$schedule->command('report:send')->dailyAt('13:00')->when(function () {
    return Carbon::now()->endOfMonth()->isToday();
});
Run Code Online (Sandbox Code Playgroud)