
If your Laravel queue is not working, jobs are not processing, or emails are stuck in the database, you’re not alone. Queue issues are one of the most common problems Laravel developers face—especially on VPS or shared hosting.
In this complete fix guide, we’ll cover all possible reasons, step-by-step solutions, and best practices to make your Laravel queue work reliably.
What Is Laravel Queue?
Laravel queues allow you to defer time-consuming tasks (emails, notifications, API calls, file processing) so your application runs faster and smoother.
Instead of running tasks instantly, Laravel pushes them to a queue, and a queue worker processes them in the background.
Common Signs Laravel Queue Is Not Working
- Jobs stuck in
jobstable - Emails not sending
- Queue worker stops automatically
- No error but job never runs
- Queue works locally but not on server
1. Check Queue Connection (Most Common Issue)
Open your .env file:
QUEUE_CONNECTION=database
Common queue drivers:
sync(runs immediately, no queue)databaseredissqs
Important:
If it’s set to sync, queue will appear not working.
Fix: Change it to database or redis, then run:
php artisan config:clear
2. Did You Run Queue Worker?
Laravel does not process jobs automatically.
Run this command:
php artisan queue:work
For development only, you can use:
php artisan queue:listen
Production Best Practice:
Use Supervisor (explained below).
3. Database Queue Table Missing
If you’re using the database driver, ensure the jobs table exists.
Run:
php artisan queue:table
php artisan migrate
Check your database:
jobstable should exist- Failed jobs stored in
failed_jobs
4. Failed Jobs Blocking the Queue
Check failed jobs:
php artisan queue:failed
Retry them:
php artisan queue:retry all
Clear failed jobs:
php artisan queue:flush
5. Queue Job Class Issues
Make sure:
- Job implements
ShouldQueue - Correct namespace
- No syntax errors
Example:
use Illuminate\Contracts\Queue\ShouldQueue;
class SendEmailJob implements ShouldQueue
{
public function handle()
{
// job logic
}
}
Without ShouldQueue, job runs synchronously.
6. Queue Worker Stops Automatically (Server Issue)
Queue worker stops after deployment or crash unless managed properly.
Solution: Install Supervisor (Production Fix)
Install Supervisor:
sudo apt install supervisor
Create config file:
sudo nano /etc/supervisor/conf.d/laravel-queue.conf
Paste:
[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/your-project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/queue.log
Reload Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue:*
This permanently fixes Laravel queue not working on VPS.
7. Permissions Issue (Very Common on Hosting)
Ensure correct permissions:
chmod -R 775 storage bootstrap/cache
If using shared hosting, permissions are often the root cause.
8. Redis Queue Not Working?
Check:
- Redis installed
- Redis service running
.envconfiguration correct
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
Restart queue:
php artisan queue:restart
9. Queue Works Locally But Not on Server
Likely reasons:
- Supervisor not installed
.envnot updated- PHP version mismatch
- Disabled functions on hosting
- Cron not running
Always check logs:
storage/logs/laravel.log
10. Clear & Restart Everything (Quick Fix)
php artisan optimize:clear
php artisan queue:restart
php artisan config:clear
php artisan cache:clear
Best Practices to Avoid Queue Issues
- Use Supervisor in production
- Monitor
failed_jobs - Log inside jobs for debugging
- Restart queue after deployment
- Prefer Redis for high traffic apps
FAQs – Laravel Queue Not Working
Why is Laravel queue not processing jobs?
Because the worker is not running or the queue driver is misconfigured.
Is Supervisor mandatory?
Yes, for production servers.
Which queue driver is best?
Redis (best performance), Database (easy setup).
Final Thoughts
If your Laravel queue is not working, the issue is usually:
- Wrong queue connection
- Worker not running
- Supervisor missing
- Permission or server config issue
Follow this guide step by step and your queue will work 100% reliably.