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, status
wird auf pending
, created_at
bis now()
und scheduled_at
auf das Datum / die Uhrzeit festgelegt.
Wenn ausstehende Zeitpläne ausgeführt werden, status
wird auf running
und executed_at
auf gesetzt now()
.
Wenn die geplante Aufgabe erfolgreich abgeschlossen wurde, status
wird sie auf success
und finished_at
auf gesetzt now()
.
Wenn die geplante Aufgabe eine Ausnahme ausgelöst hat, status
wird sie auf Fehler und finished_at
auf gesetzt now()
.
Wenn der Aufgabenstatus älter pending
und scheduled_at
älter als der konfigurierte Wert "Verpasst, wenn nicht ausgeführt" ist, wird der Status auf gesetzt missed
.