Cronjobs in Magento

Wenn man in Magento ein Modul schreibt, kann dieses ebenfalls ein Cronjob enthalten. In diesem Beitrag wird beschrieben, wie man mit Cronjobs in Magento umgeht, wie sie arbeiten und wie man sie testen kann.

Im root-Verzeichnis der Magento-Installation finden sich die Dateien cron.sh und cron.php. Beide Dateien sind die Basis und der Einstiegspunkt für die Ausführung von geplanten Tasks in Magento. Diese Datei muss also regelmäßig vom Betriebssystem aufgerufen werden – in jedem Durchlauf entscheidet Magento ob etwas zu tun ist.

Jedes Mal wenn eine der beiden Dateien aufgerufen wird, durchsucht Magento alle config.xml-Dateien nach crontab Einträgen. Auf Basis des Ergebnisses wird die Tabelle cron_schedule gefüllt. Danach wird geprüft, ob aktuell Jobs ausgeführt werden sollen und ob es welche gibt die in der Vergangenheit ausgeführt werden mussten. Diese werden angestoßen. Wie lange bereits „verpasste“ Jobs im Nachhinein noch ausgeführt werden sollen, kann im Backend von Magento festgelegt werden.

Nach dem Durchlauf wird die Tabelle aufgeräumt. Dazu werden alte Einträge von Jobs gelöscht, welche bereits ausgeführt wurden oder verpasst wurden.

Die Einstellungen der Crons findet man im Backend unter: System – Konfiguration – System (unter Erweitert) im Tab Cron.

Magento Crons

Um eine bestimmte Methode eines Moduls zu testen (was ebenfalls in einem Cron passiert), habe ich im Netz folgendes Script gefunden. Dieses kann man beliebig bennen, ins root-Verzeichnis von Magento packen und dann jedes beliebige Model instanziieren und Methoden ausführen.

require_once './app/Mage.php';
 
Varien_Profiler::enable();
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
 
umask(0);
Mage::app();
 
$obj = Mage::getModel('any/model');
$obj->callAnyModelMethod();

Weitere hilfreiche Links zum Thema:


Beitrag veröffentlicht

in

, , , , ,

von

Schlagwörter: