Introduzione
Laravel Horizon è stato progettato per facilitare il monitoraggio delle code tramite un'interfaccia web. Con Laravel Horizon potrai gestire infatti le code di Redis grazie a una Dashboard che fornisce diversi dati statistici sui tempi di esecuzione, throughput o fallimento dei processi interessati, inviando delle notifiche in caso di errori.
Prerequisiti
Per utilizzare Horizon, è necessario che i tuoi processi siano su una coda di Redis e che la tua connessione della coda sia impostata sulla voce redis, all'interno del file di configurazione config/queue.php.
Installazione di Horizon
Per installare Horizon, usa il packer manager Composer, tramite il comando:
$ composer require laravel/horizon
A questo punto, occorrerà pubblicare le risorse di Horizon tramite:
$ php artisan horizon:install
Per assicurarti di star usando un client Redis, puoi installare nel progetto un pacchetto specifico chiamato predis:
$ composer require predis/predis
Infine, occorre modificare il file di configurazione database.php, specificando l'utilizzo di predis come Redis Client:
'client' => env('REDIS_CLIENT', 'predis'),
Modificate le configurazioni, occorrerà svuotare la cache di Horizon e avviarlo.
$ php artisan cache:clear
$ php artisan horizon
All'avvio di Horizon, se tutto è avvenuto correttamente il sistema dovrebbe mostrare il seguente messaggio di conferma dell'esecuzione.
Opzioni di Horizon
Per gestire le impostazioni di Horizon, ti basterà aprire e modificare dei file di configurazione specifici.
Da horizon.php, presente nella cartella config, potrai visionare e modificare le impostazioni di default della gestione code.
Le voci di default, all'interno del file, saranno le seguenti:
'defaults' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'maxProcesses' => 1,
'tries' => 1,
'nice' => 0,
],
],
'environments' => [
'production' => [
'supervisor-1' => [
'maxProcesses' => 10,
'balanceMaxShift' => 1,
'balanceCooldown' => 3,
],
],
'local' => [
'supervisor-1' => [
'maxProcesses' => 3,
],
],
],
Analizzando le voci, potrai notare un campo denominato "balance". I valori inseribili saranno:
- simple, che farà dividere il processo in sole due code;
- auto, che permetterà la divisione in code in base ai processi rimanenti e ai tempi di attesa medi;
- null, che farà gestire i processi da un'unica coda.
Nel campo queue, invece, potrai definire delle nuove code in cui suddividere i processi, inserendo una virgola e un nuovo nome tra apici.
Puoi anche definire un numero minimo e un massimo di processi da poter gestire in una coda.
Altre impostazioni da evidenziare, sono quelle presenti nel file queue.php:
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
],
Come si può notare, la connessione di una coda vuota rimarrà su default e, nel caso in cui non si presentino altri processi all'interno della coda, essa si riavvierà ogni 90 secondi.
La Dashboard
Per accedere al pannello di controllo delle code, occorrerà collegarsi all'indirizzo: http://IndirizzoIP:ServerPort/horizon/ che dovrai sostituire chiaramente con l'indirizzo IP del tuo server e la porta su cui hai installato il servizio.
Se il progetto è ospitato in locale, occorrerà usare invece l'indirizzo: http://localhost:8000/horizon/
La Dashboard mostra gli output di Horizon, basati ovviamente sulle configurazioni decise in precedenza. É sempre possibile modificare la configurazione e definire nuove code dal file horizon.php.
Come visto precedentemente, sarà necessario interrompere Horizon, svuotare la cache e riavviarlo. Al termine di queste tre operazioni, collegandosi nuovamente alla Dashboard, sarà possibile visualizzare i nuovi output.
Conclusioni
Ora dovresti avere una installazione funzionante di Laravel Horizon e saperti muoverti tra le più importanti opzioni di configurazione e nel pannello di controllo delle code.
Per maggiori informazioni sulle varie funzionalità e opzioni di Horizon, puoi consultare la documentazione ufficiale di Horizon.