Kann mir jemand erklären, wie magento cron_schedule genau läuft?

7

Wenn wir cron.php von magento ausführen, werden dann einige Jobs in der Tabelle cron_schedule von magento erstellt? Kann mir jemand mitteilen, wie Magento diese Jobs genau ausführt? Ich meine, wie sich der Jobstatus von ausstehend zu erfolgreich ändert. Cron.php fügt nur Jobs in die Tabelle ein und führt keine Jobs aus

Pankaj
quelle

Antworten:

16

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.

Elch
quelle
Beeilen
@ janw verzeihen mich?
Elch
1
Der obige Link ist defekt (allgemeine Weiterleitung). Ich hasse es, wie Magento all diese Links unterbrochen hat.
janw
1
Ja, es ist ärgerlich, genauso wie die Foreninformationen. Wie auch immer, ich habe den größten Teil des Artikels in meine Antwort kopiert, so dass er immer noch relativ vollständig ist :)
Moose