Shopware 6 Background Queue Worker (User-Rechte)
Dieser Artikel beschränkt sich auf die Einrichtung und Steuerung der Shopware 6 Background Queue Workern mit eingeschränkten Rechten. Sofern Sie über Root-Zugriff auf Ihren Server verfügen, nutzen Sie bitte den Artikel: Shopware 6 Background Queue Worker einrichten (Root-Rechte)
Shopware 6 verwendet für die Verarbeitung von Hintergrundaufgaben sowie für die Verarbeitung von wiederkehrenden Aufgaben sogenannte Message Queue Worker. In der Standard-Konfiguration werden diese über den angemeldeten Administrator im Browser ausgeführt. Sobald mehr als ein Administrator angemeldet ist, werden diese Message Queue Worker mehrfach ausgeführt und es kann zu einer sehr hohen CPU-Last sowie zu Problemen bei der Ausführung von PHP FPM kommen.
Hinzufügen der Shopware User Services
Melden Sie sich via SSH mit dem Deploy oder Management-Benutzer an und navigieren Sie mit folgendem Kommando zu den Systemd-Services des aktiven Benutzers:
cd ~/.config/systemd/user/
Sollte das Verzeichnis nicht existieren, wenden Sie sich bitte an unseren Support.
In dem Verzeichnis ~/.config/systemd/user/
werden alle Systemd-Services, des Benutzers gespeichert. Um den Shopware Message Queue Consumer anzulegen, erstellen Sie folgende Datei:
# ~/.config/systemd/user/shopware_consumer.service
[Unit]
Description=Shopware Message Queue Consumer
After=mysql.service
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=10
Environment="MESSENGER_CONSUMER_NAME=consumer"
ExecStart=/opt/plesk/php/8.3/bin/php /var/www/mein-shop.com/httpdocs/bin/console messenger:consume async failed --memory-limit=512M --time-limit=120
[Install]
WantedBy=default.target
Sofern Sie eine ältere Shopware Version einsetzen, muss hier alternativ der default
Receiver hinzugefügt werden. Beispiel für default
Receiver:
ExecStart=php /var/www/mein-shop.com/httpdocs/bin/console messenger:consume failed default --memory-limit=512M --time-limit=120
Neben dem Message Queue Consumer ist außerdem der Service für die wiederkehrenden Aufgaben (Scheduled Tasks) erforderlich. Erstellen Sie hierzu folgende Datei:
# ~/.config/systemd/user/shopware_scheduled_tasks.service
[Unit]
Description=Shopware Scheduled Tasks Runner
After=mysql.service
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=10
ExecStart=/opt/plesk/php/8.3/bin/php /var/www/mein-shop.com/httpdocs/bin/console scheduled-task:run --memory-limit=512M --time-limit=120
[Install]
WantedBy=default.target
Wichtig: Achten Sie auf korrekte Angaben von den Verzeichnissen. In diesem Beispiel befindet sich die Installation in dem Verzeichnis /var/www/vhosts/mein-shop.com/. Dieses Verzeichnis dient nur als Beispiel und muss auf den korrekten Pfad Ihrer Installation angepasst werden.
Services steuern
Verwenden Sie die folgenden Befehle zum Starten, Stoppen und Neustarten:
# Status anzeigen
systemctl --user status shopware_consumer.service
systemctl --user status shopware_scheduled_tasks.service
# Service starten
systemctl --user start shopware_consumer.service
systemctl --user start shopware_scheduled_tasks.service
# Service stoppen
systemctl --user stop shopware_consumer.service
systemctl --user stop shopware_scheduled_tasks.service
# Service Neustarten
systemctl --user restart shopware_consumer.service
systemctl --user restart shopware_scheduled_tasks.service
Service Autostart
Damit ein Service beim Start des Betriebssystems automatisch ausgeführt wird, muss dieser zum Autostart hinzugefügt werden.
# Status anzeigen
systemctl --user is-enabled shopware_consumer.service
systemctl --user is-enabled shopware_scheduled_tasks.service
# Mögliche Ausgaben: enabled / disabled
# Autostart aktivieren
systemctl --user enable shopware_consumer.service
systemctl --user enable shopware_scheduled_tasks.service
# Autostart deaktivieren
systemctl --user disable shopware_consumer.service
systemctl --user disable shopware_scheduled_tasks.service
Service Daemon Reload
Sofern Sie Änderungen an bereits aktiven Services vornehmen, ist das erneute Initialisieren des Systemd-Daemons erforderlich. Dies kann über folgenden Befehl durchgeführt werden:
systemctl --user daemon-reload
Erweiterte Informationen
Für den automatisierten Start von User-Services wenden Sie sich bitte an unseren Support oder nutzen Sie unseren Live-Chat. Sofern die Hintergrund-Ausführung von unserem Support nicht aktiviert wurde, wird der User-Service nicht dauerhaft ausgeführt.