Probleem: Laravel Queues actief houden
Laravel queues helpen bij het beheren van achtergrondtaken, maar ze kunnen onverwacht stoppen met draaien. Dit kan de verwerking van jobs vertragen en de prestaties van je Laravel-applicatie beïnvloeden. Het draaiend houden van queue workers is een veelvoorkomend probleem voor Laravel-ontwikkelaars.
Oplossingen voor permanente Queue-verwerking
De nohup-opdracht gebruiken
De nohup-opdracht houdt Laravel queue-processen draaiend op de achtergrond, zelfs na het sluiten van een SSH-verbinding. Het betekent "no hang up" en stelt een proces in staat om te blijven draaien nadat je uitlogt.
Om nohup te gebruiken met Laravel queue, voer je deze opdracht uit:
nohup php artisan queue:work --daemon &
De "&" aan het einde start het proces op de achtergrond, zodat je de terminal kunt blijven gebruiken.
Nohup schrijft uitvoer naar een bestand genaamd nohup.out in de huidige directory. Je kunt de uitvoer omleiden naar een ander bestand of het weggooien:
nohup php artisan queue:work --daemon > /dev/null 2>&1 &
Deze opdracht gooit zowel standaarduitvoer als foutmeldingen weg.
Tip: Monitor nohup-processen
Om nohup-processen te monitoren, gebruik je de 'ps'-opdracht:
ps aux | grep artisan
Dit toont alle draaiende artisan-processen, inclusief die gestart zijn met nohup.
Supervisor implementeren
Supervisor is een procesbeheersysteem voor Unix-achtige besturingssystemen. Het biedt een oplossing voor het beheren van Laravel queue workers.
Supervisor biedt deze voordelen voor Laravel queue-beheer:
- Herstart queue workers als ze crashen
- Beheert meerdere queue workers
- Logt en monitort processen
Om Supervisor in te stellen voor Laravel queues:
- Installeer Supervisor op je server
- Maak een configuratiebestand voor je Laravel queue worker
- Update de Supervisor-configuratie
- Start het Supervisor-proces
Een basisconfiguratie van Supervisor voor een Laravel queue worker kan er zo uitzien:
[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
Deze configuratie start 8 queue worker-processen en herstart ze als ze stoppen.
Example: Supervisor-opdrachten
Veelgebruikte Supervisor-opdrachten:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
sudo supervisorctl stop laravel-worker:*
sudo supervisorctl restart laravel-worker:*
Deze opdrachten laden de configuratie opnieuw, starten, stoppen en herstarten de Laravel queue workers.





