我已经设置了一个命令,该命令必须在每月的最后一天运行一次。这是我的方法:
$schedule->command('report:send')->when(function () {
return Carbon::now()->endOfMonth()->isToday();
});
Run Code Online (Sandbox Code Playgroud)
今天是一个月的最后一天,因此效果很好。但问题是此命令每分钟执行一次。因此,每分钟我都会在收件箱中收到一封电子邮件:/
是否有可能因为我->everyMinute();
在测试时使用过并且必须刷新设置而发生这种情况?
每次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)