Skip to main content
← Back to articles
Debugging note β€’ Laravel production issue and solution

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 β€’ β€’ 4 min read
Laravel Scheduler Not Running? Fix Cron, Queue & Worker Issues (Complete 2026 Guide)

Production debugging note

This article explains the real cause of the issue, the correct fix, and the checks that help prevent the same problem from returning.

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


 

Need help with a similar issue?

Let’s make the next technical decision clearer.

Share the problem, the relevant error, or the current system. I can help identify the practical next step.

Request a project review

Continue reading

Related Laravel fixes

View all articles β†’
Birendra Jung Rai

Birendra Jung Rai

Laravel Engineer β€’ System Architect β€’ Technical Educator