Läuft ein eigener Magento Cronjob länger als sein eingestelltes Intervall, kann der nächste Lauf bereits starten, obwohl der vorherige noch arbeitet. Bei Importen, Exporten oder anderen schreibenden Prozessen kann das schnell zu doppelter Verarbeitung oder konkurrierenden Zugriffen führen.

Magento bringt dafür mit dem LockManagerInterface bereits einen passenden Mechanismus mit. Vor dem eigentlichen Prozess wird ein Lock gesetzt. Existiert dieser bereits, beendet sich der zweite Lauf direkt wieder.

Der Name des Locks sollte für den jeweiligen Prozess eindeutig sein. Solange vendor_module_import gesperrt ist, kann kein zweiter Lauf mit demselben Lock gleichzeitig starten.

Wichtig ist das finally: Auch wenn innerhalb des Cronjobs eine Exception entsteht, wird der Lock anschließend wieder freigegeben.

Magento verwendet den Lock Mechanismus selbst an verschiedenen Stellen, unter anderem um parallele Prozesse voneinander fernzuhalten. Für längere eigene Cronjobs ist LockManagerInterface deshalb deutlich sauberer als eine selbst gebaute Statusdatei oder ein Flag in der Datenbank.

Parallele Ausführung eines Cronjobs verhindern
Sie benötigen Unterstützung bei der Umsetzung dieser Lösung oder Sie haben die passende Lösung für Ihr Magento Problem noch nicht gefunden? Kontaktieren Sie mich und ich helfe Ihnen bei Ihrem Magento Projekt!
Schlagwörter: