我已经设置了一个必须在每个月的最后一天运行一次的命令。这就是我做到的:
$schedule->command('report:send')->when(function () {
return Carbon::now()->endOfMonth()->isToday();
});
今天是这个月的最后一天,所以效果很好。但问题是这个命令每分钟都在执行。所以每一分钟我都会收到收件箱中的电子邮件:/
是否有可能发生这种情况,因为我在测试时使用->everyMinute();
并且必须刷新设置或其他内容?
答案 0 :(得分:3)
每次cron启动时都会测试该命令。我相信你的cron每分钟都会执行一次,因为这一天命令返回true,所以每分钟都会被执行一次。
你能做的是:
$schedule->command('report:send')->daily()->when(function () {
return Carbon::now()->endOfMonth()->isToday();
});
或
$schedule->command('report:send')->dailyAt('13:00')->when(function () {
return Carbon::now()->endOfMonth()->isToday();
});
答案 1 :(得分:1)
我想你可以试试这个:
$schedule->command('report:send')->monthly()->when(function () {
return Carbon::now()->endOfMonth()->isToday();
});
希望这对你有用