Scheduled Tasks und Cronjobs

Hallo zusammen,

ich hänge immer noch an den Cronjobs und scheduled tasks.
Auf manchen Seiten liest es sich, als wäre es mega leicht auf anderen findet man diverse Scripte die man noch vorher konfigurieren muss. Aber eine genaue Anleitung wie und was gemacht werden sollte finde ich nicht.

Deshalb würde ich mal zusammenfassen was ich gefunden habe und wie ich denke und wäre froh wenn mir jemand kurz einen Anstoß geben könnte ob das so richtig ist oder nicht.

  1. Ich erstelle eine shopware.yaml Datei in der ich den Admin Worker auf false stelle.

admin_worker:

enable_admin_worker: false

  1. Ich clear den cache indem ich über Putty in mein Shopware Verzeichnis gehe und folgenden Befehl ausführe:

/usr/bin/php7.4 bin/console cache:clear

  1. Die abzuarbeitenden „message queue“ und „scheduled-tasks“ werden ja von den einzelnen Plugins jeweils in die Datenbank gelegt, richtig? Durch die Kommandos

bin/console messenger:consume default --time-limit=300

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

werden diese abgearbeitet? Verstehe ich das richtig? Oder fehlt mir hier ein Schritt/Gedanke?
4. Damit das auch regelmäßig läuft, habe ich bei unserem Provider (webgo) zwei Cronjobs angelegt:
Ausführungszeit */5 * * * *

/usr/bin/php7.4 /home/www/shopware6/bin/console messenger:consume default --time-limit=300 /home/www/shopware6/ >/dev/null 2>&1

/usr/bin/php7.4 /home/www/shopware6/bin/console scheduled-task:run --time-limit=300 /home/www/shopware6/ >/dev/null 2>&1

Damit sollte der ja, soweit Schritt 3 richtig ist, die Tasks durcharbeiten.

Habe ich das ganze richtig verstanden?

Über Hilfe wäre ich echt froh.

Sieht für mich so richtig aus:

scheduled-task:run → Befüllt die enqueue Tabelle mit einzelnen Nachrichten basierend auf den Aufgaben in der scheduled_task Tabelle

messenger:consume → Startet einen Worker der die Nachrichten abarbeitet

Das Zeitlimit beendet beide Prozesse automatisch nach 300 Sekunden, entsprechend muss der Cronjob alle 300 Sekunden ausgeführt werden. Ich finde diesen Wert aber sehr hoch, lieber alle 60 Sekunden.

Hallo und vielen Dank. Jetzt fühle ich mich schon etwas besser.
Ich stelle dann jetzt mal alles auf 60 Sekunden und starte auch die Cronjobs */1 * * * *

Hoffentlich klappt alles :slight_smile:

Edit: Wie kann man prüfen ob alles richtig abläuft? :slight_smile:

Das siehst du wenn in der scheduled_task Tabelle die execution_time sich ändern und die enqueue Tabelle sich abarbeitet bzw. leer bleibt.

Perfekt! Scheint zu funktionieren. Vielen Dank.

Nun hat sich aber folgendes gezeigt:

Name: app_update
status: failed

Wenn ich jetzt im Backend auf das verfügbare Update gehe, lädt es die Seite nicht durch.
Hätte vielleicht das Update vorher durchführen sollen :sweat_smile:


(sieht seit 5 Minuten so aus)

Aber hängt das jetzt zusammen?

ich habe zufällig nach „app_update“ gesucht.

Das Problem hatte ich auch mal. Bei mir hat es geholfen den Cache vom Browser und Shop zu löschen.

aber ob das mit deinem Cronjob zu tun hat kann ich dir nicht sagen.

1 Like

Hatte ich tatsächlich auch mal und war mit dem Löschen des Browsercaches wieder erledigt…

Hi MartinAntrag,
hi FP10,

danke für eure Tipps - ich habe das bereits in einem anderen Thread gelöst:

Es lag an der Lizenzdomain :slight_smile:

1 Like

Du hast recht! Vermutlich hatte sich die Umstellung überschnitten.

Danke für das Mitteilen der Lösung. :+1: