Scheduled Tasks anlegen

Generell werden in Shopware 6 viele Aktualisierungsfunktionen regelmäßig als Hintergrundprozess im Browser ausgeführt (Message Queue), wenn ein Benutzer in der Administration angemeldet ist. Dies kann jedoch bei mehreren gleichzeitig in der Administration arbeitenden Benutzern zu Performance-Einbußen führen.

Darüber hinaus gibt es einige Funktionen, die nur zu einem bestimmten Zeitpunkt durchgeführt werden sollen. Diese werden nicht über die Message Queue ausgeführt. Hierzu können Scheduled Tasks (geplante Aufgaben) genutzt werden, um diese ohne das Eingreifen eines Benutzer auszuführen.
Dies können z.B. das Generieren der Sitemap oder das Bereitstellen von Produktdaten für Vergleichsportale sein.

Die folgenden Einstellungen erfolgen direkt auf dem Server. Da die Möglichkeiten der Serverkonfiguration vom Hoster abhängt, erläutern wir dies hier allgemein. Bei Fragen zur Bedienung der Serverkonfiguration sollte der Support Deines Hosters weiterhelfen können.

Scheduled Tasks zur regelmäßigen Ausführung einrichten

Für die Ausführung der Scheduled Tasks wird ein Cronjob auf dem Server eingerichtet. Wir empfehlen, diesen für die regelmäßige Ausführung alle 5 Minuten einzurichten. Als Befehl wird


php /pfad/zu/Shopware/bin/console scheduled-task:run --time-limit=295 --memory-limit=512M

verwendet.
Der Zusatz "--time-limit=295" sorgt dafür, dass der Befehl für 295 Sekunden ausgeführt wird. Dadurch ist dieser beendet, wenn die erneute Ausführung nach 5 Minuten gestartet wird.
Über"--memory-limit=512M" wird der maximal durch diesen Befehl belegte Arbeitsspeicher auf 512 MB beschränkt, was ein volllaufen des RAMs verhindert.

Die Einrichtung des Cronjobs auf dem Server kann je nach Hoster variieren. Hierzu solltest Du bei Deinem Hoster weitere Informationen erhalten. Profihost beschreibt dies z.B. unter https://wissen.profihost.com/wissen/artikel/wie-richte-ich-einen-cronjob-ein/.

Außerdem kann es je nach Konfiguration des Hosters sinnvoll sein, den o.g. Befehl in ein Skript auszulagern und das Skript in den Cronjob einzubinden.

Messenger Queue servergesteuert abarbeiten

Solltest Du die Messenger Queue nicht über Hintergrundprozesse des Browser abarbeiten wollen, sind die Punkte in den zwei nachfolgenden Abschnitten umzusetzen.

Admin-Worker deaktivieren

Um die Ausführung des Standard-Workers (Browser-Hintergrundprozess) zu deaktivieren, ist eine Anpassung der Datei  shopware.yaml im Unterverzeichnis /config/packages Deiner Shopware-Installation erforderlich. Sollte diese Datei nicht vorhanden sein, lege sie an.
In der Datei wird folgendes eingetragen


shopware:
    admin_worker:
        enable_admin_worker: false

Anschließend ist es erforderlich, den Shop-Cache zu leeren.
Dies ist über den Befehl


php bin/console cache:clear

möglich, den Du direkt auf dem Server (z.B. per SSH) ausführst.

Message Queue zur Abarbeitung einrichten

Die Message Queue sollte durchgängig abgearbeitet werden. Daher empfiehlt es sich, den Befehl alle 5 Minuten neu zu starten. Damit durch den regelmäßigen Start auf Dauer nicht sehr viele parallele Prozesse ausgeführt werden, kann mit dem Zusatz "--time-limit=295" der laufende Prozess kurz vorher beendet werden.


php /pfad/zu/shopware/bin/console messenger:consume --time-limit=295

Ein Memory-Limit kann jedoch dazu führen, dass der Prozess frühzeitig unterbrochen wird. Daher sollte das Memory-Limit an dieser Stelle nicht verwendet werden.

Weitere Informationen von einigen Hostern

Einige Hoster stellen in Ihren Wissensbereichen Artikel zur Verfügung, in denen beschrieben wird, wie die Einrichtung dort zu erfolgen hat.

Profihost

Bei Profihost findest Du weitere Informationen zur Einrichtung unter https://wissen.profihost.com/wissen/artikel/shopware-6-worker-im-hintergrund-laufen-lassen/

Hetzner

Hetzner stellt die Informationen bereit unter
https://community.hetzner.com/tutorials/install-shopware-6#step-6---configuring-background-queue-worker

Creoline

Creoline stellt die Informationen bereit unter
https://www.creoline.de/support/article/60309/

War dieser Artikel hilfreich?