1. Home
  2. Wissensdatenbank
  3. Software & Skriptsprachen
  4. Shopware
  5. Shopware 6: Worker im Hintergrund laufen lassen
  1. Home
  2. Wissensdatenbank
  3. Software & Skriptsprachen
  4. Shopware 6: Worker im Hintergrund laufen lassen

Shopware 6: Worker im Hintergrund laufen lassen

Hintergrund
In der Standardkonfiguration führt Shopware 6 Browser Prozesse aus, um alle Hintergrundaufgaben zu erledigen. Dadurch werden andere Web-PHP-Prozesse blockiert. Sofern nun mehrere Benutzer gleichzeitig im Backend arbeiten, verlangsamt dies entsprechend die Seitengeschwindigkeit.

Um diese Performance Einbußen zu minimieren, können die Prozesse auf dem Server direkt ausgeführt werden.

Der Admin-Worker ist gemäß Shopware ausdrücklich nicht für Produktivsysteme geeignet.

Wichtige vorab Information:

Da auf unseren Systemen mehrere php-Versionen zur verfügung stehen und auf jedem System Global eine andere php-Version definiert ist, (abhängig vom Standard zum Zeitpunkt der Installation dessen) kann die Standard php-Version des Systems von der, die Ihre Software benötigt, abweichen.

Daher nutzen Sie bitte in den Skripten die direkte Ansprache der von Ihrer Software benötigten php-Version indem Sie in den folgenden Beispielen "phpX.Y" gegen die benötigte Version ersetzen z.B.: "php8.2".

Alle Pfade finden Sie hier: Wie lauten die Pfade zu Perl, PHP und Python auf dem Server?

Deaktivieren der Browser Prozesse
Zum deaktivieren der Browser Prozesse muss folgendes in Shopware hinzugefügt werden:

/home/'Benutzer'/'Shopverzeichnis'/config/packages/z-shopware.yaml

shopware:
    admin_worker:
        enable_admin_worker: false

In früheren Versionen von Shopware 6 wurde dies direkt in der parallel liegenden shopware.yaml definiert, nun muss dies jedoch in die z-shopware.yaml geschrieben werden da die andere Datei durch den Updater überschrieben wird.

Damit die Einstellung greift, muss der Cache geleert werden:

/usr/local/phpX.Y/bin/php /home/’Benutzer’/’Shopverzeichnis’/bin/console cache:clear

sowie einmal vom Backend abgemeldet und neu angemeldet werden, damit die Einstellung auch aus der Session verworfen wird.

Cronjobs einrichten
Um die Cronjobs zu erstellen, müssen folgende Skripte hochgeladen werden:

sw_consumer.sh vor Shopware 6.5

#!/bin/bash
cd "$(dirname "$0")"

/usr/local/phpX.Y/bin/php /home/’Benutzer’/’Shopverzeichnis’/bin/console messenger:consume --time-limit=295 --memory-limit=512M

sw_consumer.sh ab Shopware 6.5

#!/bin/bash
cd "$(dirname "$0")"

/usr/local/phpX.Y/bin/php /home/’Benutzer’/’Shopverzeichnis’/bin/console messenger:consume failed async --time-limit=295 --memory-limit=512M

sw_scheduled_task.sh

#!/bin/bash
cd "$(dirname "$0")"

/usr/local/phpX.Y/bin/php /home/’Benutzer’/’Shopverzeichnis’/bin/console scheduled-task:run --time-limit=295 --memory-limit=512M

Die Skripte müssen Ausführungsrechte besitzen, damit der Cronjob diese starten kann, der Speicherort ist frei wählbar.

Wie Cronjobs eingerichtet werden finden Sie hier:

Wie richte ich einen Cronjob ein?

Folgende Werte sollten gesetzt werden:

* Ausführung alle 5 Minuten
* Laufzeit: 300 Sekunden
* Memory: 512MB

Weitere Informationen zum Admin Worker und der Message Queue finden Sie in der Entwicklerdokumentation von Shopware: Message Queue -- Shopware Developer

 

Diese Anleitung dient zur Orientierung und wir versuchen, diese auch stets aktuell zu halten.
Trotzdem sollten Sie immer prüfen, ob die genannten Informationen noch aktuell sind, da sich dies bei jedem Update von Shopware ändern kann.

Aktualisiert am 16. Oktober 2024
War dieser Artikel hilfreich?

Ähnliche Artikel