Alle Artikel
Laravel5 min

Laravel Queue nicht ausgeführt – Diagnose & Fix

Queues gehören zu den wichtigsten Features in Laravel für zeitaufwendige Prozesse wie E-Mail-Versand, Bildverarbeitung oder API-Calls. Doch was tun, wenn plötzlich keine Laravel Queue nicht ausgeführt wird? Jobs stauen sich in der Datenbank, Prozesse bleiben stecken – und die Fehlersuche kostet wertvolle Zeit.

In diesem Artikel zeige ich dir die häufigsten Gründe, warum Laravel Queues nicht funktionieren, wie du sie systematisch diagnostizierst und welche Lösungen wirklich helfen.

Wie Laravel Queues funktionieren

Bevor wir in die Fehlerdiagnose gehen, kurz zur Funktionsweise: Laravel speichert Jobs in einer Queue (z.B. Datenbank, Redis, SQS). Ein Queue-Worker holt sich diese Jobs und führt sie aus. Das Zusammenspiel hat mehrere kritische Punkte, an denen Probleme auftreten können.

Der typische Ablauf:

  1. Job wird dispatcht: ProcessOrder::dispatch($order)
  2. Job landet in der konfigurierten Queue-Connection
  3. Queue-Worker (php artisan queue:work) holt den Job ab
  4. Job wird ausgeführt oder fehlgeschlagen

Wenn deine Laravel Queue nicht ausgeführt wird, ist meist einer dieser Schritte betroffen.

Häufigste Ursache: Kein Worker läuft

Der mit Abstand häufigste Grund ist simpel: Es läuft kein Queue-Worker. Viele Entwickler dispatchen Jobs, vergessen aber, den Worker zu starten.

Schnellcheck:

php artisan queue:work

Wenn Jobs jetzt plötzlich abgearbeitet werden, war das dein Problem. Auf Produktionsservern sollte der Worker als Systemdienst laufen (über Supervisor, systemd oder ähnliche Tools).

Production-Setup mit Supervisor:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /pfad/zu/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
numprocs=1
user=www-data

Ohne permanenten Worker-Prozess bleibt deine Queue stehen – egal wie sauber der Code ist.

Problem 2: Falsche Queue-Connection

Laravel unterstützt verschiedene Queue-Driver: sync, database, redis, sqs und weitere. Wenn deine Laravel Queue nicht ausgeführt wird, prüfe die Konfiguration in .env:

QUEUE_CONNECTION=database

Häufiger Fehler: Der Worker läuft mit einer anderen Connection als der Job dispatcht wird. Beispiel: .env sagt redis, aber der Job wird an database geschickt.

Prüfen:

// In deinem Job oder Controller
Log::info('Queue Connection: ' . config('queue.default'));

Fix: Stelle sicher, dass QUEUE_CONNECTION in .env und die tatsächlich genutzte Connection übereinstimmen. Nach Änderungen an .env oder Config-Dateien:

php artisan config:clear
php artisan queue:restart

Problem 3: Job-Fehler werden verschluckt

Manchmal wird die Laravel Queue nicht ausgeführt, weil Jobs stillschweigend fehlschlagen. Laravel verschiebt fehlerhafte Jobs in eine failed_jobs-Tabelle – wenn diese existiert.

Migration erstellen:

php artisan queue:failed-table
php artisan migrate

Fehlgeschlagene Jobs prüfen:

php artisan queue:failed

Zeigt dir alle Jobs mit Exception und Zeitstempel. Mit php artisan queue:retry [id] kannst du einzelne Jobs neu starten.

Tipp: Implementiere die failed()-Methode in deinen Jobs für besseres Error-Handling:

public function failed(\Throwable $exception)
{
    Log::error('Job failed: ' . $exception->getMessage());
    // Benachrichtigung an Slack, E-Mail etc.
}

Problem 4: Timeout-Einstellungen

PHP und Laravel haben verschiedene Timeout-Grenzen. Wenn deine Laravel Queue nicht ausgeführt wird oder mittendrin abbricht, könnten diese Werte zu niedrig sein:

Job-Level Timeout:

public $timeout = 300; // 5 Minuten

Worker-Level:

php artisan queue:work --timeout=300

PHP max_execution_time: Auch der PHP-Prozess selbst hat Grenzen – meist 30 oder 60 Sekunden in php.ini. Für Queue-Worker sollte dieser Wert höher sein (oder 0 für unbegrenzt).

Problem 5: Memory-Limit erreicht

Queue-Worker können über Zeit Speicher ansammeln. Laravel bietet die --max-jobs und --max-time Optionen:

php artisan queue:work --max-jobs=1000 --max-time=3600

Nach 1000 Jobs oder 1 Stunde startet der Worker automatisch neu. Das verhindert Memory-Leaks und sorgt dafür, dass Code-Updates geladen werden.

Problem 6: Veralteter Cache nach Deployment

Nach einem Git-Pull oder Deployment läuft oft noch alter Code. Der Worker liest gecachte Versionen der Job-Klassen.

Lösung nach jedem Deployment:

php artisan config:clear
php artisan cache:clear
php artisan queue:restart

Der queue:restart-Befehl setzt ein Flag, sodass Worker nach dem aktuellen Job neu starten und frischen Code laden.

Systematische Diagnose in 5 Schritten

Wenn deine Laravel Queue nicht ausgeführt wird, gehe so vor:

  1. Worker-Check: ps aux | grep "queue:work" – Läuft überhaupt ein Prozess?
  2. Queue-Inhalt: php artisan queue:monitor oder direkt in jobs-Tabelle schauen
  3. Failed Jobs: php artisan queue:failed – Gibt es Exceptions?
  4. Logs prüfen: storage/logs/laravel.log – Was sagt Laravel?
  5. Test-Job: Einfachen Test-Job dispatchen und Worker im Foreground starten
// routes/web.php (nur zum Testen!)
Route::get('/test-queue', function() {
    \Log::info('Test job dispatched');
    dispatch(new \App\Jobs\TestJob());
    return 'Job dispatched';
});

Mit php artisan queue:work -vvv im Vordergrund siehst du sofort, was passiert.

Monitoring & Alerting

Für Produktivumgebungen empfehle ich aktives Monitoring:

  • Laravel Horizon (für Redis-Queues): Dashboard + Statistiken
  • Custom Health-Check: Endpoint, der prüft, ob Jobs älter als X Minuten existieren
  • Sentry/Bugsnag: Automatische Error-Reports bei fehlgeschlagenen Jobs

Ein simpler Health-Check kostet 15 Minuten Development-Zeit und spart Stunden an Debugging, wenn du merkst, dass deine Laravel Queue nicht ausgeführt wird.

Preise für professionelle Laravel-Entwicklung

Die Implementierung eines robusten Queue-Systems mit Monitoring, Error-Handling und Worker-Setup kostet je nach Umfang zwischen 1.500 und 4.000 €. Für bestehende Systeme liegt der Aufwand meist im unteren Bereich, komplexe Workflows mit mehreren Queue-Connections und Custom-Logic entsprechend höher.

Bei Performance-Problemen mit bestehenden Queues rechne mit ab 800 € für Analyse und Optimierung.

Fazit

Wenn deine Laravel Queue nicht ausgeführt wird, liegt es meist an einem nicht laufenden Worker, falscher Konfiguration oder stillschweigenden Fehlern. Mit den beschriebenen Diagnose-Schritten findest du das Problem in wenigen Minuten – vorausgesetzt, du weißt, wo du suchen musst.

Für Produktivsysteme ist ein professionelles Setup mit Supervisor, Monitoring und ordentlichem Error-Handling unverzichtbar. Ein ausgefallener Queue-Worker kann schnell zu verpassten E-Mails, hängenden Bestellungen oder frustrierten Nutzern führen.

Du suchst einen Laravel-Entwickler für Queue-Implementierung, Performance-Optimierung oder Bugfixing? Kostenloses Erstgespräch auf lonexa.de – ich helfe dir, deine Laravel-Anwendung stabil und skalierbar zu machen. Weitere Projekte findest du in meinen Referenzen.

Laravel Queue nicht ausgeführtLaravelFreelancerWebentwicklungDüsseldorf