2016-01-20 7 views
5

Ora la lettura attraverso la docs non vedo una funzione diretta per questo, ma io vedo la possibilità di utilizzare il metodo monthly() combinato con un metodo when(), così ho pensato, potrei fare questo forse:Come posso programmare un'attività di laravel in un giorno specifico del mese?

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

Ma ora ho paura che non funzioni, perché per quanto posso vedere proverà il vincolo when() solo una volta al mese (probabilmente non nella data in cui lo desidero) e poi quando fallisce salta quel mese. Almeno questo è quello che indovinerei leggendo la fonte di laravel.

Quindi mi sono perso, come faccio a fare in modo che questo accada?

+0

Potrebbe non essere il modo più pulito, ma se si cambia "mensilmente" in "ogni giorno", mantenere la condizione "when" penso che funzionerà. –

risposta

7

Il modo più semplice potrebbe essere quella di utilizzare il metodo di cron Quindi nel tuo caso

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

che sta dicendo corsa alla mezzanotte del giorno 23 del mese.

+3

È disponibile solo un piccolo aggiornamento da laravel 5.2.23 in poi [monthlyOn] (https://laravel.com/api/5.2/Illuminate/Console/Scheduling/Event.html#method_monthlyOn). – Jigar

0

Possiamo anche usare la funzione predefinita che viene dato in programmazione laravel

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

monthlyOn (data, 'Time');

Questo programma di pianificazione verrà eseguito il 24 di ogni mese alle 17:00.

Problemi correlati