2017-03-24 3 views
0

Ich habe zwei Anwendungen auf dem gleichen Server laufen. Jetzt scheint es so, als ob beim Hinzufügen des Jobs zum Scheduler withoutOverlapping() und beim Verwalten des Base-Cronjobs über Cron selbst, diese beiden Apps sich bei der Ausführung gegenseitig blockieren. Könnte das sein?Laravel Scheduler (ohne Overlapping)

Antwort

1

Ja, funktioniert nur pro Anwendung.

Laravel erstellt eine Datei im Speicherordner mit einem Hash des Jobs. Wenn die Datei existiert, weiß Laravel, dass der Job noch läuft. Die eine Anwendung kann möglicherweise nicht wissen, ob die andere Anwendung gerade einen Auftrag ausführt, da sie keinen Zugriff auf den Speicherordner der anderen Anwendung hat.

+0

Danke für den Kommentar, aber was ich erlebt ist genau das Gegenteil, das Sie beschrieben haben. Wenn ich beide Apps mit einem Scheduler für die Warteschlange arbeite, dann scheint es so, als ob eine App die Ausführung der anderen blockiert. – suddenbreak

0

Wenn Ihr Code sieht wie folgt aus

$schedule->command('process:queue 0')->everyMinute()->withoutOverlapping(); 
$schedule->command('process:queue 1')->everyMinute()->withoutOverlapping(); 

Es ist, weil dieselben Befehle mit unterschiedlichen Parametern bc überlappende betrachtet könnten.

I.e. Der Hash des Jobs berücksichtigt nur die Befehlssignatur.