Problema: Mantenere Attive Le Code Laravel
Le code Laravel aiutano a gestire le attività in background, ma possono smettere di funzionare inaspettatamente. Ciò può ritardare l'elaborazione dei lavori e influire sulle prestazioni dell'applicazione Laravel. Mantenere i worker delle code in esecuzione è un problema comune per gli sviluppatori Laravel.
Soluzioni per L'Elaborazione Persistente Delle Code
Utilizzo del Comando nohup
Il comando nohup mantiene i processi delle code Laravel in esecuzione in background, anche dopo la chiusura di una connessione SSH. Significa "no hang up" e permette a un processo di continuare a funzionare dopo il logout.
Per utilizzare nohup con la coda Laravel, esegui questo comando:
nohup php artisan queue:work --daemon &
Il "&" alla fine avvia il processo in background, permettendoti di utilizzare il terminale.
Nohup scrive l'output in un file chiamato nohup.out nella directory corrente. Puoi reindirizzare l'output su un file diverso o scartarlo:
nohup php artisan queue:work --daemon > /dev/null 2>&1 &
Questo comando scarta sia l'output standard che i messaggi di errore.
Suggerimento: Monitorare i processi nohup
Per monitorare i processi nohup, usa il comando 'ps':
ps aux | grep artisan
Questo elenca tutti i processi artisan in esecuzione, inclusi quelli avviati con nohup.
Implementazione di Supervisor
Supervisor è un sistema di controllo dei processi per sistemi operativi simili a Unix. Offre una soluzione per la gestione dei worker delle code Laravel.
Supervisor offre questi vantaggi per la gestione delle code Laravel:
- Riavvia i worker delle code in caso di crash
- Gestisce più worker delle code
- Registra e monitora i processi
Per configurare Supervisor per le code Laravel:
- Installa Supervisor sul tuo server
- Crea un file di configurazione per il tuo worker della coda Laravel
- Aggiorna la configurazione di Supervisor
- Avvia il processo Supervisor
Una configurazione base di Supervisor per un worker della coda Laravel potrebbe apparire così:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/your/project/artisan queue:work
autostart=true
autorestart=true
user=www-data
numprocs=8
redirect_stderr=true
stdout_logfile=/path/to/your/project/worker.log
Questa configurazione avvia 8 processi worker della coda e li riavvia se si fermano.
Esempio: Comandi Supervisor
Comandi comuni di Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
sudo supervisorctl stop laravel-worker:*
sudo supervisorctl restart laravel-worker:*
Questi comandi ricaricano la configurazione, avviano, fermano e riavviano i worker della coda Laravel.





