Bearbeiten aktualisiert 2017-04-07:
Es gibt jetzt drei Möglichkeiten, Ihre Warteschlange auszuführen:
queue:work
- Dies ist der neue "Daemon" -Prozess (das Flag wird nicht mehr benötigt). Das Framework wird "einmal" gestartet - und dann die Jobs weiter durchlaufen. Dies wird auf unbestimmte Zeit fortgesetzt. Es verbraucht weniger Speicher / CPU als queue:listen
weil das Framework die ganze Zeit aktiv bleibt. Sie müssen auch daran denken, queue:restart
die Warteschlange zu verwenden, um alle Codeänderungen zu aktualisieren, die Sie während des Patchens übertragen.
queue:work --once
- Dadurch wird das Framework gestartet, ein Job verarbeitet und dann heruntergefahren. Nützlich zum Testen während der Entwicklung usw.
queue:listen
- Dadurch wird das Framework in jedem Zyklus gestartet, ein Job verarbeitet, dann vollständig heruntergefahren und dann das Framework erneut gestartet usw. und eine unbegrenzte Schleife ausgeführt. Dies bedeutet, dass alle Speicher / Prozesse nach der Verarbeitung jedes Jobs freigegeben werden. Wenn Sie Speicherlecks mit haben queue:work
- probieren Sie es aus.
Das --daemon
Flag wirkt sich nicht mehr auf diese Befehle aus.
Ursprüngliche Antwort:
Es sind zwei verschiedene Probleme aufgeführt.
Es gibt artisan queue:work
undartisan queue:listen
queue:work
wird einfach den nächsten Job in der Warteschlange entfernen und nur diesen einen Job verarbeiten. Dies ist ein einmaliger Befehl, der zur Verarbeitung der Eingabeaufforderung zurückkehrt, sobald der Befehl für eine Warteschlange verarbeitet wird.
queue:listen
hört die Warteschlange ab und verarbeitet weiterhin alle empfangenen Warteschlangenbefehle. Dies läuft unbegrenzt weiter, bis Sie es stoppen.
In Laravel> = 4.2 wurde ein --daemon
Befehl hinzugefügt. Die Funktionsweise besteht einfach darin, die Warteschlangen direkt auszuführen, anstatt das gesamte Framework neu zu starten, nachdem jede Warteschlange verarbeitet wurde. Dies ist ein optionaler Befehl, der den Speicher- und CPU-Bedarf Ihrer Warteschlange erheblich reduziert.
Der wichtige Punkt mit dem --daemon
Befehl ist, dass Sie beim Aktualisieren Ihrer Anwendung Ihre Warteschlange speziell neu starten müssen queue:restart
, da sonst möglicherweise alle möglichen seltsamen Fehler auftreten können, da Ihre Warteschlange immer noch den alten Code im Speicher hat.
Um Ihre Frage " Welchen Befehl soll ich zum Ausführen meiner Dämonen verwenden? " Zu beantworten, lautet die Antwort fast immerqueue:work --daemon