Hallo zusammen,
vorab in eigener Sache: Das Plugin ist von mir. Ich betreibe auch einen Cron-Dienst, das Plugin funktioniert aber mit jedem Cron-Service, der eine Adresse aufrufen kann.
Ich bin seit Shopware 5 dabei. Dort hat ein Cron /backend/cron aufgerufen, und alles lief. In Shopware 6 laufen Scheduled Tasks und Message Queue über Worker.
Wer per Cron die Konsole aufrufen darf, braucht kein Plugin. Zwei Einträge jede Minute reichen:
* * * * * php /pfad/zum/shop/bin/console scheduled-task:run --time-limit=60
* * * * * php /pfad/zum/shop/bin/console messenger:consume async low_priority --time-limit=60
Danach den Admin-Worker in config/packages/shopware.yaml abschalten:
shopware:
admin_worker:
enable_admin_worker: false
Für Hoster, bei denen ein Cronjob nur eine Adresse per wget oder curl aufrufen kann (oder die gar keinen Cron haben), habe ich ein kleines Plugin geschrieben. Es stellt eine geheime Adresse bereit. Jeder Aufruf plant die fälligen Tasks ein und arbeitet die Queue ab, höchstens 25 Sekunden lang und mit Sperre gegen doppelte Läufe. Solange Aufrufe kommen, ist der Admin-Worker aus. Bleiben sie 15 Minuten aus, ist er von selbst wieder an.
- kostenlos, MIT-Lizenz
- Shopware 6.5 bis 6.7 (getestet mit 6.6 und 6.7)
Quellcode und Download: GitHub
Rückmeldungen gern hier oder als Issue auf GitHub.
Joscha