2016-01-20 82 views
5

現在通過docs閱讀我沒有看到一個直接的功能,但我確實看到使用monthly()方法與when()方法相結合的選項,所以我想,可能我這樣做也許:如何在每個月的特定日期安排laravel任務?

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

但是現在我恐怕不會工作,因爲據我所見,它只會每月嘗試一次when()約束(可能不是我想要的日期),然後當它失敗時跳過那個月。至少這是我通過閱讀laravel的來源猜測的。

那麼我迷路了,我該如何做到這一點?

+0

可能不是最乾淨的方式,但如果你改變'每月'爲'每日'保持然後'當'條件我認爲這將工作。 –

回答

7

最簡單的方法可能是利用cron方法使你的情況

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

即在午夜在本月23日說運行。

+3

只需稍後更新,從laravel 5.2.23起[monthlyOn](https://laravel.com/api/5.2/Illuminate/Console/Scheduling/Event.html#method_monthlyOn)可用。 – Jigar

0

我們也可以使用在laravel調度

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

monthlyOn(日期, '時間')給出的默認功能;

此調度程序將在每個月的24號下午5點運行。

相關問題