Laravel Queues are great for dealing multiple time consuming processes. These job queues are processed by the queue worker. And Supervisor is a process monitor which handles the automatically starting the queue worker.
A queue worker processes the queued jobs and runs the tasks associated with them just by a simple artisan command.
php artisan queue:work
To start the queue worker, run the above artisan command. It will keep on running until it is stopped manually or the terminal is closed. After it is stopped you have to run it again.
It is a long-lived process and stores the booted application state in memory so after any changes to your code, you have to restart the worker. To automatically start the queue worker again, you have to install a process manager like Supervisor to manage queue workers.
Supervisor
The supervisor is a process manager which Laravel suggests to use as a process monitor for queue workers. It will automatically start the queue worker in the background, even after the system has booted and will automatically restart the worker if the worker exits unexpectedly.
Installing Supervisor on Linux
To install supervisor, use the following command.
sudo apt-get install supervisor
Supervisor configuration for Laravel
After installation, we have to create a configuration file for Laravel. Create a laravel-queue-worker.conf
file in /etc/supervisor/conf.d
directory. Add the following configuration lines.
[program:laravel-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/path/to/yoursite.com/artisan queue:work
autostart=true
autorestart=true
user=username
numprocs=3
redirect_stderr=true
stdout_logfile=/home/path/to/yoursite.com /queue-worker.log
In this configuration file, you can see the artisan queue:work
command will run. numprocs=
3 will run 3 worker process. You can change it as your requirements.
Starting Supervisor
Now to start the queue worker, run the following commands in the terminal.
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue-worker:*
Now you’re good to go. The supervisor takes care of running and restarting the worker for you automatically.