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

时间:2017-06-30 06:20:42

标签: php laravel cron

我已经设置了一个必须在每个月的最后一天运行一次的命令。这就是我做到的:

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

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

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

2 个答案:

答案 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();
});

希望这对你有用