scheduled task / Cronjob - Ablauf und Funktionsweise

Hallo zusammen,

in Shopware 6 werden die Cronjobs ja über  bin/console scheduled-task:run und b in/console messenger:consume  ausgeführt. Beide Scripte laufen so ja in einer Endlosschleife und unterscheiden sich somit von der Vorgehensweise in SW5. Wie soll mit der Ausführungsvariante in Shopware 6 gearbeitet werden? Ein Cronjob auf dem Server, der das Script allle X Minuten aufruft ist somit ja jetzt nicht mehr Sinnhaft, oder?

Müssen beide Scripte auf dem Server in einer Endlosschleife durchlaufen? Wie ist es in der Praxis sinnvoll?

VG
Rick

Vielleicht hilft dir der Thread:

https://forum.shopware.com/discussion/comment/270360/#Comment_270360

Wo ist der Unterschied zwischen den beiden Befehlen und was machen Sie genau? Ich habe mir folgende Links angeschaut aber werde nicht richtig schlau daraus:

https://docs.shopware.com/en/shopware-platform-dev-en/references-internals/core/module/tasks#the-task-scheduler
https://docs.shopware.com/en/shopware-platform-dev-en/references-internals/core/module/queue

Die Tasks in der Tabelle “scheduled_task” werden durch beide Befehle ausgeführt, was ich an der “last_execution_time” sehe. Müssen trotzdem beide Befehle regelmäßig ausgeführt werden? Muss eine Reihenfolge eingehalten werden?

würde mich auch interessieren… werd nich schlau…

 

  • welchen der Befehle muss ich ausführen?
  • Muss ich die 1x ausführen und dann laufen sie für immer?
  • brauch ich noch wie bei SW5 einen Cron auf dem Server, der den SW Cron dann triggert alle Jobs auszuführen?
  • woher weiß ich, ob mein Cron erfolgreich angestoßen wurde und läuft? 
  • wie kann ich sehen, welche Cronjobs gerade laufen?
  • wie kann ich einen Cronjob deaktivieren?
  • kann mein TaskHandler einen Konstruktor haben, der mehr als den scheduled_task.repository Parameter hat?

 

ich habe außerden einen Cron, der so um die 1,5 Stunden läuft … ist ein Produktabgleich vieler Produkte. Wie richt ich den am besten ein?

bin/console scheduled-task:run --time-limit=60

The worker will automatically exit once it has been running for 60s

mit 60s komm ich ja nicht weit… aber ich kann auch kaum 30000s angeben… andere Crons sollen in der Zwischenzeit natürlich öfters laufen.

wenn ich mit dem messenger:consume -vv arabeite, sehe ich tausende Einträge für [messenger] Shopware\Core\Content\Sitemap\ScheduledTask\SitemapMessage

wieso ist das so? Wird wohl jede Sekunde ausgeführt oder wie… 

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ 

Kann jemand helfen?

@FloC3 schrieb:

Kann jemand helfen?

Würde mich hier ebenfalls freuen, wenn jemand eine Info dazu geben kann… 

Ich würde eigene Cronjobs auch erstmal als solche bauen. Damit hat man mehr Kontrolle. Also einen einfachen Command erstellen. Nutze ich momentan zB für DB-Cleanup Aufgaben.

Für SW6 Aufgaben hab ich hingegen den TaskRunner einrichten lassen.

Grundsätzlich gibts zwei CLI Befehle, die zyklisch auf dem Webserver ausgeführt werden sollten, wo shopware läuft. Dazu ist vorher der „admin worker“ in der shopware.yaml zu deaktivieren. Denn standardmäßig läuft dies alles, wenn man im Backend eingeloggt ist. Deshalb „Admin worker“. Details dazu, siehe shopware Doku.

Dann könnte man ein systemd Skript schreiben oder sonst wie den Worker zyklisch neu starten auf der Console. Ich habe das bei uns mittels Cronjob gelöst. Der Cron startet die zwei Prozesse immer alle 10 Minuten an. Beide haben ein LIMIT von 5 Minuten, sind also beendet, bis der Cron die beiden Prozesse neu anstartet. Das geht dann permanent so…

Also cronjobs für Shopware AB VERSION 6.5.7 wie folgt:

→ # SHOPWARE: Alle 10 Minuten CLI-worker mit 300sec und Mem 512M Limit starten:
*/10 * * * * /usr/bin/php /var/www/shop/web/bin/console messenger:consume async low_priority --time-limit=300 --memory-limit=512M
*/10 * * * * /usr/bin/php /var/www/shop/web/bin/console scheduled-task:run --time-limit=300 --memory-limit=512M

1 „Gefällt mir“