Skip to main content

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 in routes/console.php. In alternativa in withSchedule di bootstrap/app.php.

Tipi di task pianificabili

Comandi Artisan

Con command.
I comandi definiti tramite closure possono concatenare direttamente lo scheduling.

Job in coda

Coda e connessione:

Comandi shell

Closure

Oggetti invocabili:

Frequenza

Espressione cron

Combinazione frequenza + giorno

Timezone

Globale in config/app.php:
Con l’ora legale i task potrebbero eseguirsi due volte o non eseguirsi affatto. Consigliato UTC quando possibile.

Vincoli condizionali

when / skip

environments

Orario

Giorno

Prevenzione sovrapposizioni

Con withoutOverlapping la prossima esecuzione attende la fine della precedente.
Durata del lock in minuti (default 24h):
Il lock usa la cache. Per svuotarlo:

Esecuzione su più server

Con onOneServer solo una macchina esegue il task.
Richiede driver cache database, memcached, dynamodb o redis condiviso.

Flusso di controllo distribuito

Raggruppare i task

Esecuzione in background

I task pianificati alla stessa ora vengono eseguiti in ordine. Con runInBackground li esegui in parallelo.
Solo per command ed exec.

Modalità manutenzione

In manutenzione i task pianificati non partono. Per forzarli:

Pausa dello scheduler

Con evenWhenPaused alcuni task continuano.

Output

Su file

appendOutputTo accoda.

Via email

Solo fallimento:

Hook

Successo/fallimento:

Deploy sul server

1

Aggiungi una voce cron

Modifica con crontab -e.
2

Verifica

Laravel Cloud gestisce lo scheduling senza configurare cron.

In sviluppo locale

Foreground, chiama lo scheduler ogni minuto finché non premi Ctrl+C.

Sub-minuto

schedule:run resta attivo per completare tutti i task sub-minuto.
Delega ai job in coda per non bloccare l’esecuzione.
Per interrompere in deploy:

Comandi comuni

Ultima modifica il 13 luglio 2026