2016-01-20 6 views
5

lese nun durch die docs Ich habe keine direkte Funktion für das sehen, aber ich habe die Möglichkeit, finden Sie in die monthly() Methode mit einem when() Verfahren kombiniert zu verwenden, so dass ich dachte, ich könnte dies vielleicht tun:Wie kann ich eine Laravel-Aufgabe an einem bestimmten Tag im Monat planen?

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

Aber jetzt habe ich Angst, dass das nicht funktionieren wird, denn soweit ich sehen kann, wird es versuchen, die when() Constraint nur einmal im Monat (wahrscheinlich nicht an dem Datum, dass ich es will) und dann, wenn es fehlschlägt es überspringt diesen Monat. Zumindest vermute ich, dass ich die Quelle von Laravel gelesen habe.

Also dann bin ich verloren, wie mache ich das möglich?

+0

Könnte nicht der sauberste Weg sein, aber wenn Sie "monatlich" in "täglich" ändern, dann behalten Sie "wann" Bedingung Ich denke, das wird funktionieren. –

Antwort

7

Der einfachste Weg, könnte die Verwendung des cron Verfahrens so in Ihrem Fall

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

Das sagt läuft um Mitternacht am 23. Tag des Monats zu machen sein.

+3

Nur ein kleines Update, ab Laravel 5.2.23 [monthlyOn] (https://laravel.com/api/5.2/Illuminate/Console/Scheduling/Event.html#method_monthlyOn) ist verfügbar. – Jigar

0

Wir können auch die Standardfunktion verwenden, die in Laravel Scheduling

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

monthlyOn (Datum, 'Time') gegeben ist;

Dieser Planer wird am 24. jeden Monats um 17 Uhr ausgeführt.

Verwandte Themen