2016-07-12 5 views
1

1 Warteschlange mit Datenbank drivar.My Warteschlange: Arbeitsbefehl auf Everyminute ausgeführt.Laravel 5.1 Warteschlange - Wie zu vermeiden Warteschlange: Arbeitsbefehl, um den laufenden Job abzurufen

Ich möchte den Job für maximal 2 Versuche ausführen und es funktioniert. aber das Problem ist meine Warteschlange: work cron läuft jede Minute und selbst wenn der frühere Job läuft, versucht es für den gleichen Job.

Wie kann ich die Warteschlange vermeiden: Arbeitsbefehl zum Ausführen des laufenden Auftrags.

Dank

Antwort

0

queue:work wird nicht versuchen, einen Job auszuführen, die bereits ausgeführt wird, da es Flag zu Beginn des Prozesses reserviert wird. Was Sie möglicherweise erleben, ist die Tatsache, dass Ihr Job vor dem nächsten Ausführen von Cron fehlschlägt, so dass es den gleichen Job für immer wieder versucht.

Sie können --tries immer verwenden, wenn Sie aufrufen, um die Anzahl der Versuche zu begrenzen, die ein Job haben wird. Wenn Sie also php artisan queue:work --tries=2 ausführen, wird der Auftrag dreimal ausgeführt. Wenn er alle 3 Mal fehlschlägt, wird er zur Tabelle failed_jobs hinzugefügt.

Stellen Sie sicher, dass Sie Ihre Umgebung (Datenbankmigration) mit php artisan queue:failed-table vorbereitet haben.

+0

Hallo Marco, Danke für die Antwort, aber ich habe Debug mit dem Protokoll. Warteschlange: Arbeit führt einen Job aus, auch wenn er reserviert ist. Vielleicht mache ich etwas falsch. Ich führe die Warteschlange: Arbeitsbefehl jede Minute von Schedular und Cron wird für Zeitplan hinzugefügt: run. Warteschlange: Liste funktioniert ordnungsgemäß. Danke. – Raviraj

Verwandte Themen