Skip to main content

Laravel Scheduler Not Running? Fix Cron, Queue & Worker Issues (Complete 2026 Guide)

Laravel scheduler not running? Learn how to fix cron, queue, and worker issues step-by-step. Includes Laravel 12 updates and shared hosting solutions.

Birendra Jung Rai β€’ Apr 3, 2026 β€’ 4 min read

Facing the same issue?

This guide walks you through the exact fix β€” step by step.

Laravel Scheduler Not Running? Fix Cron, Queue & Worker Issues (Complete 2026 Guide)

Laravel Scheduler Not Running? Fix It Fast (Step-by-Step Guide for 2026)

πŸ” Introduction

If your Laravel scheduler is not running, critical tasks like emails, backups, and reports will silently fail — and your application can break without obvious errors.

This is one of the most common production issues in Laravel.

πŸ‘‰ The root cause is usually:

  • Missing cron job

  • Queue not running

  • Server misconfiguration

In this guide, you’ll learn:

  • How Laravel scheduler actually works

  • Why it fails in real-world environments

  • How to fix it in local, VPS, and shared hosting setups

πŸ”— Related (Important)

If your scheduler is running but jobs are getting stuck during execution, this is a deeper queue-level issue.

πŸ‘‰ Laravel jobs stuck in queue fix

⏰ What is Laravel Scheduler?

Laravel Scheduler lets you define all automated tasks in one place instead of managing multiple cron jobs.

Example:

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->daily();
}

πŸ‘‰ This runs your command automatically every day.


βš™οΈ How Laravel Scheduler Works

Laravel scheduler depends entirely on cron.

Required cron job:

* * * * * php /path-to-project/artisan schedule:run >> /dev/null 2>&1

πŸ‘‰ This runs every minute and triggers Laravel’s scheduler.


⏱️ What Does “Cron Runs Every Minute” Mean?

* * * * *

πŸ‘‰ It simply means:

πŸ‘‰ Run the command every minute


πŸ” What Happens Internally?

Every minute:

  1. Cron runs schedule:run

  2. Laravel checks scheduled tasks

  3. Executes due tasks


⚠️ Important Behavior

  • Cron does not wait for previous execution

  • It blindly runs every minute


❗ If No Tasks Exist

  • Scheduler runs

  • Nothing happens

  • Exits instantly


❗ If Tasks Exist

  • Executes tasks

  • May push jobs to queue


🧠 Core Concepts (Must Understand)


πŸ“¦ Job (Task)

A job is a unit of work like:

  • Sending email

  • Processing data

  • Generating reports


πŸ“‹ Queue (Task List)

Queue stores jobs before execution.

πŸ‘‰ Think of it as a to-do list


πŸ‘· Worker (Executor)

Worker processes jobs:

php artisan queue:work

Worker Flow:

Check queue
→ Pick job
→ Execute job
→ Repeat

🧠 Simple Analogy

Concept Real Life
Job Task
Queue To-do list
Worker Employee

⚠️ Important Production Rule

πŸ‘‰ In production, queue requires:

php artisan queue:work

❌ Never run this inside scheduler

πŸ‘‰ Because:

  • It’s a long-running process

  • Scheduler expects short tasks


⚠️ Laravel 11 & 12 Update

From Laravel 11+:

  • Kernel.php structure changed

  • Configuration moved toward bootstrap/app.php

πŸ‘‰ Scheduler still works the same — but structure differs.


πŸ” Environment Setup (Real-World)


πŸ§ͺ Local Development

php artisan schedule:run
php artisan queue:work

βœ” Manual testing
βœ” Debug-friendly


πŸš€ VPS / Dedicated Server

  • Cron → Scheduler

  • Supervisor → Queue worker

βœ” Best performance
βœ” Recommended setup


🌐 Shared Hosting (Important)

Limitations:

  • No persistent processes

  • No Supervisor


βš™οΈ Queue Handling in Shared Hosting

Use cron as worker replacement.

βœ… Setup:

* * * * * php /home/username/public_html/artisan queue:work --stop-when-empty

πŸ”„ Full Flow

CRON
 ↓
schedule:run
 ↓
Scheduler pushes job
 ↓
CRON triggers queue worker
 ↓
Processes jobs
 ↓
Stops

⚠️ Why --stop-when-empty?

  • Prevents hanging processes

  • Safe for shared hosting


πŸ“Š Environment Summary

Environment Setup
Local Manual
VPS Supervisor
Shared Hosting Cron-based

❗ Common Reasons Scheduler Fails

  • Cron job missing

  • Wrong artisan path

  • Queue not running

  • Wrong timezone

  • No scheduled tasks


πŸ”§ Step-by-Step Fixes


βœ… Fix 1: Add Cron Job

crontab -e
* * * * * php /your-project/artisan schedule:run

βœ… Fix 2: Verify schedule()

$schedule->command('inspire')->everyMinute();

βœ… Fix 3: Test Manually

php artisan schedule:run

βœ… Fix 4: Check Queue Worker

php artisan queue:work

βœ… Fix 5: Check Logs

storage/logs/laravel.log

βœ… Fix 6: Debug Cron Output

* * * * * php artisan schedule:run >> output.log 2>&1

πŸ§ͺ Working Example

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')
             ->daily()
             ->withoutOverlapping();
}

πŸ’‘ Best Practices

  • Use a single cron job

  • Keep scheduled tasks lightweight

  • Use queues for heavy processing

  • Monitor logs regularly

  • Restart workers after deployment


❌ Common Mistakes

  • Forgetting cron setup

  • Incorrect PHP path

  • Not running queue worker

  • Misusing scheduler


❓ FAQs

Why is Laravel scheduler not running?

Because the cron job is missing or misconfigured.


How do I test scheduler?

php artisan schedule:run

Where is scheduler defined?

  • Laravel ≤10 → Kernel.php

  • Laravel 11+ → New structure


Does scheduler need cron?

Yes — always.


Can scheduler run without queue?

Yes, but queued jobs still need workers.


🏁 Conclusion

If your Laravel scheduler is not running, the issue is almost always:

  • Missing cron

  • Queue worker not running

  • Server limitations

Once you understand:

πŸ‘‰ Cron → Scheduler → Queue → Worker

You can debug and fix any scheduler issue confidently.


πŸ‘‰ Official Docs:
https://laravel.com/docs/scheduling


 

Want this fixed in your project?

I solve real Laravel production issues β€” quickly and properly.

Get Help β†’

πŸ’Ό Real Work

I’ve solved similar issues in real production Laravel systems.

View Case Studies β†’
Profile

Birendra Jung Rai

Laravel Developer β€’ System Architect β€’ Debugging Specialist

Still stuck?

Let’s fix it properly β€” no trial and error.

Get Professional Help β†’