2016-01-20 9 views
5

Teraz czytanie przez docs nie widzę bezpośredniego funkcję, ale widzę możliwość wykorzystania metody monthly() połączeniu z metodą when(), więc pomyślałem, mogłem zrobić to może:Jak zaplanować zadanie typu laravel w konkretny dzień miesiąca?

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

Ale teraz obawiam się, że to nie zadziała, ponieważ, o ile widzę, będzie próbować ograniczenia when() tylko raz w miesiącu (prawdopodobnie nie w dniu, w którym chcę), a następnie, gdy się zawiedzie, przeskakuje w tym miesiącu. Przynajmniej to właśnie zgaduję, czytając źródło laravel.

Więc jestem zagubiony, jak mogę to zrobić?

+0

Może nie być najczystszym sposobem, ale jeśli zmienisz 'miesięcznie' na' codziennie' zachowaj wtedy warunek 'when', który moim zdaniem zadziała. –

Odpowiedz

7

Najprostszym sposobem może być wykorzystanie metody cron więc w Twoim przypadku

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

to mówi o północy bieg na 23. dnia miesiąca.

+3

Trochę aktualizacji, od wersji laravel 5.2.23 [monthlyOn] (https://laravel.com/api/5.2/Illuminate/Console/Scheduling/Event.html#method_monthlyOn) jest dostępna. – Jigar

0

Możemy również użyć funkcji domyślnego, który jest podany w laravel harmonogramu

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

monthlyOn (data, 'Time');

Ten program planujący będzie uruchamiany 24 dnia każdego miesiąca o godzinie 17:00.