如何在每月的特定日期安排laravel任务?

时间:2016-01-20 10:38:24

标签: php laravel cron laravel-5.1

现在阅读docs我没有看到直接的功能,但我确实看到了使用monthly()方法结合when()方法的选项,所以我想,我可以这样做吗:

$schedule->command('send:reminders')->monthly()->when(function() {
    return date('d') == '23';
});

但现在我担心这样做不会起作用,因为据我所知,它每月只会尝试when()约束一次(可能不是我想要它的日期)然后当它失败时它跳过那个月。至少这是我从阅读laravel的来源猜测的。

那么我迷路了,我该如何实现呢?

2 个答案:

答案 0 :(得分:7)

最简单的方法可能是使用cron方法,所以在你的情况下

$schedule->command('send:reminders')->cron('0 0 23 * *');

这就是说当月23日午夜时分。

答案 1 :(得分:0)

我们也可以使用laravel scheduling

中给出的默认函数

public function frequency(\Illuminate\Console\Scheduling\Event $event){ $event->monthlyOn(24, '17:00'); }

monthlyOn(日期, '时间');

此调度程序将于每月24日下午5点运行。