Einfach und unkompliziert die Cronjobs in Shopware 6 richtig einrichten, so klappts!
Shopware 6 führt im Standard die ehemaligen Cronjobs – mittlerweile “Scheduled Tasks” genannt – im Webbrowser als Hintergrundaufgaben aus. Dies passiert z.B. beim Arbeiten in der Administrationsoberfläche.
Das Ganze ist zunächst recht komfortabel, bringt jedoch einen Nachteil mit sich: Durch diese Browserprozesse werden andere PHP Prozesse blockiert. Gerade wenn gleichzeitig mehrere Nutzer im Backend arbeiten kann sich unter Umständen die Seitengeschwindigkeit verlangsamen. Auch Problematisch ist diese Konfiguration wenn man selten im Backend arbeitet da man den Shop z.B. über eine Warenwirtschaft pflegt.
Mit der richtigen Konfiguration kann man die Performance Einbußen minimieren und die Prozesse automatisiert ausführen, so klappts:
Zunächst das Deaktivieren der Standardeinstellung:
Dazu im Pfad die Dateil shopware.yaml öffnen
/platform/src/Core/Framework/Resources/config/packages/shopware.yaml
Hier ersetzt ihr folgende Zeile:shopware:
admin_worker:
enable_admin_worker: true
durchshopware:
admin_worker:
enable_admin_worker: false
Damit die Einstellung greift, muss der Cache geleert werden:
php bin/console cache:clear
Damit wurde das oben beschriebene Standard-Verhalten deaktiviert.
Nun zum einrichten der Cronjobs wie man sie kennt:
Dazu müsst ihr eine Shell Datei mit folgendem Inhalt auf dem Server ablegen:bin/console scheduled-task:run --time-limit=550 --memory-limit=512M
Dieser ist eine Art Watcher – ähnlich dem storefront:hot / administration:watchBefehl für all diejenigen die Entwickeln 😉 – sprich der Server achtet bei Ausführung darauf ob ein Scheduled Task in die Pipeline kommt und führt ihn entsprechend aus.
Ihr solltet unbedingt vermeiden diesen Befehl mehrfach auf dem System auszuführen da entsprechend sonst mehrere Instanzen des Watchers laufen!
Zu guter Letzt solltet ihr auf dem Server noch folgende Einstellungen setzten:Script Laufzeit: 600 Sekunden
Script Ausführung alle 10 Minuten
Memory: 512MB
Damit der Server das oben erstellte Script auch tatsächlich ausführt.
Geschafft!
Damit habt ihr die Cronjobs richtig konfiguriert!