Sie möchten den folgenden Artikel lesen, der direkt auf der MagentoCommerce-Website verfügbar ist und alles enthält, was Sie über Cron-Funktionalität und Magento wissen müssen:
Magento - Wiki - So richten Sie einen Cron-Job ein
Hervorheben: Innenleben
Der Magento-Crontab-Mechanismus wird regelmäßig mithilfe des System-Cron-Jobs ausgelöst. Der Aufruf wird in der Datei cron.php initiiert:
<?php
// initialize configuration and load event observers only from /crontab/ section
Mage::getConfig()->init()->loadEventObservers('crontab');
// initialize crontab event area
Mage::app()->addEventArea('crontab');
// dispatch 'default' event for observers specified in crontab configuration
Mage::dispatchEvent('default');
Diese Sequenz wird aufgerufen Mage_Cron_Model_Observer→dispatch(), was wiederum Folgendes bewirkt :
- Geplante Aufgaben ausführen
- Generieren Sie bei Bedarf zukünftige geplante Aufgaben
- Bereinigen Sie den Verlauf geplanter Aufgaben
Aufgaben werden für jedes Mal geplant, wenn der Job basierend auf ausgeführt werden muss
<schedule><cron_expr>0 1 * * *</cron_expr></schedule>
Ausdruck und in der Tabelle cron_schedule gespeichert. Jeder Datensatz besteht aus folgenden Feldern:
schedule_id - eindeutige Kennung für geplante Aufgabe
job_code - Job-ID aus der Konfiguration
status - kann einer von sein pending, running, success, missed, error
messages - Benutzerdefinierter Text, der von der vom Job ausgeführten Methode gemeldet wird
created_at - Datum / Uhrzeit der Erstellung der Aufgabe um
scheduled_at - Datum / Uhrzeit der Ausführung der Aufgabe
executed_at - Datum / Uhrzeit der tatsächlichen Ausführung der Aufgabe (null vor der Ausführung)
finished_at - Datum / Uhrzeit der Beendigung der Ausführung der Aufgabe (null vor der Ausführung)
Wenn Zeitpläne generiert werden, statuswird auf pending, created_atbis now()und scheduled_atauf das Datum / die Uhrzeit festgelegt.
Wenn ausstehende Zeitpläne ausgeführt werden, statuswird auf runningund executed_atauf gesetzt now().
Wenn die geplante Aufgabe erfolgreich abgeschlossen wurde, statuswird sie auf successund finished_atauf gesetzt now().
Wenn die geplante Aufgabe eine Ausnahme ausgelöst hat, statuswird sie auf Fehler und finished_atauf gesetzt now().
Wenn der Aufgabenstatus älter pendingund scheduled_atälter als der konfigurierte Wert "Verpasst, wenn nicht ausgeführt" ist, wird der Status auf gesetzt missed.