Cos’è il task scheduling
Tradizionalmente devi scrivere una voce cron per ciascun task ricorrente sul server. La definizione vive fuori dal codice sorgente, non è versionata e ogni modifica richiede un SSH. Con lo scheduler di Laravel definisci lo schedule fluentemente nell’applicazione. Sul server basta una sola voce cron e lo schedule è versionato con il codice. Il posto standard èroutes/console.php.
Con
schedule:list vedi task e prossime esecuzioni.Flusso dello scheduler
Definizione dello schedule
Definisci inroutes/console.php. In alternativa in withSchedule di bootstrap/app.php.
Tipi di task pianificabili
Comandi Artisan
Concommand.
Job in coda
Comandi shell
Closure
Frequenza
Espressione cron
Combinazione frequenza + giorno
Timezone
config/app.php:
Vincoli condizionali
when / skip
environments
Orario
Giorno
Prevenzione sovrapposizioni
ConwithoutOverlapping la prossima esecuzione attende la fine della precedente.
Il lock usa la cache. Per svuotarlo:
Esecuzione su più server
CononOneServer solo una macchina esegue il task.
Flusso di controllo distribuito
Raggruppare i task
Esecuzione in background
I task pianificati alla stessa ora vengono eseguiti in ordine. ConrunInBackground li esegui in parallelo.
Modalità manutenzione
In manutenzione i task pianificati non partono. Per forzarli:Pausa dello scheduler
evenWhenPaused alcuni task continuano.
Output
Su file
appendOutputTo accoda.
Via email
Hook
Deploy sul server
1
Aggiungi una voce cron
crontab -e.2
Verifica
In sviluppo locale
Ctrl+C.
Sub-minuto
schedule:run resta attivo per completare tutti i task sub-minuto.
Per interrompere in deploy: