2016-01-20 20 views
5

Şimdi bu belki yapabileceği Bunun için doğrudan bir fonksiyonu görmüyorum docs aracılığıyla okuma, ama when() yöntemi ile kombine monthly() yöntemi kullanma seçeneğini görüyorum, ben de düşündüm:Bir laravel görevini ayın belirli bir gününde nasıl zamanlayabilirim?

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

Ama şimdi korkarım ki işe yaramaz, çünkü görebildiğim kadarıyla sadece ayda bir kez when() kısıtını deneyeceğim (muhtemelen istediğim tarihte değil) ve başarısız olduğunda atlar. bu ay. En azından laravel kaynağını okuyarak tahmin ettiğim şey bu.

O zaman kayboldum, bunu nasıl gerçekleştirebilirim?

+0

En temiz yol olmayabilir, ancak eğer aylık olarak 'günlük' olarak değiştirirseniz o zaman "ne zaman" durumunu koruyacağımı düşünüyorum. –

cevap

7

kolay yolu ayın 23 gününde gece yarısı koşmak söylüyor davanız

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

içinde cron yöntemin kullanımını böylece yapmak olabilir.

+3

Sadece biraz güncelleme, 5.2.23ten itibaren [monthOn] (https://laravel.com/api/5.2/Illuminate/Console/Scheduling/Event.html#method_monthlyOn) kullanılabilir. – Jigar

0

Biz de laravel planlaması

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

monthlyOn (Tarih, 'Zaman') verilmektedir varsayılan işlevini kullanabilirsiniz;

Bu programlayıcı, her ayın 24'ünde saat 5'te çalışacaktır.

İlgili konular