Skip to main content

Cos’è Horizon

Laravel Horizon è la dashboard di monitoraggio dedicata alle code Redis di Laravel. Visualizza in tempo reale throughput, tempi di esecuzione e fallimenti dei job e gestisci la configurazione dei worker via codice.
Horizon estende le funzionalità di base delle code. Consulta prima Code e job e assicurati che sia disponibile Redis.

Installazione

Horizon usa Redis. Verifica che QUEUE_CONNECTION in config/queue.php sia redis. Al momento non supporta Redis Cluster.
Installazione:
Pubblica asset e configurazione:
Vengono generati config/horizon.php e app/Providers/HorizonServiceProvider.php.

Configurazione

Struttura di config/horizon.php

config/horizon.php gestisce le impostazioni dei worker. Il centro è environments.
Horizon usa internamente una connessione Redis chiamata horizon. Non riutilizzare questo nome in config/database.php.

Supervisor

Ogni environment ha uno o più “supervisor”. Sono unità di gestione dei worker: puoi avere più supervisor con diverse code, strategie e numero di processi.

Default

Con defaults imposti valori comuni a tutti i supervisor.

Modalità manutenzione

Di default Horizon non elabora job in manutenzione. Con force sì.

Tentativi

0 = tentativi illimitati.

Timeout

timeout deve essere qualche secondo minore di retry_after in config/queue.php. La strategia auto può terminare job più lunghi.

Backoff

Strategie di bilanciamento

Regola il numero di worker in base al carico.
  • time — tempo stimato per svuotare la coda
  • size — numero di job in coda
Con auto l’ordine delle code non implica priorità. Per priorità stretta usa più supervisor.
Numero di worker fisso, distribuiti tra le code.
5 processi per coda.
Priorità stretta secondo l’ordine delle code.
default sempre prima di notifications.

Autorizzazione della dashboard

La dashboard è su /horizon. In locale è accessibile a tutti; in produzione limita con una gate. Modifica gate() in app/Providers/HorizonServiceProvider.php.
Senza autenticazione (protetto da IP, ad esempio):

Avvio di Horizon

Comandi base

Sviluppo locale: auto-restart

Supervisor in produzione

Installazione:
Configurazione (/etc/supervisor/conf.d/horizon.conf):
Imposta stopwaitsecs più alto del job più lungo.
Avvio:
Al deploy, riavvia Horizon:
Con Supervisor autostart=true/autorestart=true, si riavvia da solo.

Gestione dei job

Tag

Horizon aggiunge automaticamente tag ai job in base ai modelli Eloquent che ricevono.
Tag manuali via tags():
Nei listener l’evento viene passato a tags().

Silenziare job

In config/horizon.php:
Oppure implementa Silenced.

Metriche e monitoraggio

Pianifica gli snapshot:
Per cancellare le metriche:

Notifiche dei fallimenti

Notifiche per attese troppo lunghe. In boot() di HorizonServiceProvider:

Soglie di attesa

In config/horizon.php:
0 disabilita.

Job falliti

Svuotare code:

Aggiornamento

Consulta sempre la Guida all’upgrade.

Pagine correlate

Code e job

Le basi delle code Laravel: creazione, dispatch, batch e gestione fallimenti.

Redis

Configurazione e uso di Redis, backend necessario per Horizon.
Ultima modifica il 13 luglio 2026