Cron ist ein wichtiges Dienstprogramm, mit dem Sie Skripts in bestimmten regelmäßigen Abständen ausführen können. Es ist auch ein wichtiger Aspekt für webbasierte Anwendungen geworden. Es gibt viele Möglichkeiten, wie cron für Websites nützlich ist, vom Senden regelmäßiger Newsletter-Mails bis zur Synchronisierung der Datenbank mit Systemen von Drittanbietern. Sie können cron auch zum Bereinigen des Back-End-Speichers verwenden, um die Gesamtleistung einer Anwendung zu verbessern.
Magento unterstützt cron im Kern selbst, wie auch bei vielen anderen Dienstprogrammen! Sie können geplante Aufgaben im Modul einrichten, damit sie in regelmäßigen Abständen ausgeführt werden können. Magento führt alle Cron-Tasks mit den Dateien "cron.sh" und "cron.php" aus, die sich im Stammverzeichnis der Site befinden. Sie müssen also sicherstellen, dass Sie den cron auf Systemebene so eingerichtet haben, dass die "cron.sh" -Datei in regelmäßigen Abständen ausgeführt wird, was schließlich das Magento-cron-System auslöst. Und schließlich sammelt Magento alle Cron-Jobs in den Modulen und führt sie bei Bedarf in diesem speziellen Cron-Lauf aus.
Obwohl Magento bereits viele Cron-Jobs in den Kernmodulen selbst bereitgestellt hat, können Sie auch eine benutzerdefinierte Cron-Aufgabe in Ihrem Modul erstellen. Das Erstellen eines benutzerdefinierten Moduls ist genau das, worüber wir in den nächsten Abschnitten sprechen werden.
Wir erstellen ein einfaches benutzerdefiniertes Modul mit dem Namen "Customcron". Hier ist die Liste der Dateien, die für das gewünschte Setup erforderlich sind:
Zuerst müssen wir eine Modul-Enabler-Datei erstellen. Erstellen Sie eine Datei "app / etc / modules / Envato_All.xml" und fügen Sie den folgenden Inhalt in diese Datei ein. Wir haben "Envato" als Modulnamensraum und "Customcron" als Modulnamen verwendet. Es aktiviert standardmäßig unser "Customcron" -Modul.
wahr lokal
Als Nächstes müssen wir eine Modulkonfigurationsdatei erstellen. Erstellen Sie "app / code / local / Envato / Customcron / etc / config.xml" und fügen Sie den folgenden Inhalt in diese Datei ein.
1,0 5,10,15,20,25,30,35,40,45,50,55 * * * * customcron / customcron :: customcrontask Envato_Customcron_Model
Die "config.xml" -Datei sieht recht einfach aus - sie deklariert die Versionsnummer und die Modellklassen gemäß den Magento-Konventionen. Das wichtigste für uns ist jedoch
, die verwendet wird, um alle Jobs zu deklarieren. Es ist einer der "Event-Observer", mit denen Magento alle Cron-Jobs in den Modulen sammelt.
Weiter unter der
Tag, haben wir unseren benutzerdefinierten Crontab-Job mit der
Etikett. Es ist eine Art eindeutige Kennung für den Cron-Job. Obwohl in der obigen Datei nur eine einzige Aufgabe erstellt wurde, können Sie mehrere Cron-Jobs unter einrichten
Etikett. Als nächstes unter
wir haben definiert
und
Stichworte.
Das
tag definiert cron-Intervalle im
Tag, an dem der Job regelmäßig ausgeführt wird. In unserem Fall wird die benutzerdefinierte cron-Aufgabe alle fünf Minuten ausgeführt. Aber warte mal, was macht es alle fünf Minuten? Genau das ist das
tag steht für! Es gibt die "Model-Methode" an, die von Magento während des benutzerdefinierten Cron-Job-Laufs aufgerufen wird.
Als Nächstes erstellen wir eine Modelldatei "Cronjob.php". Erstellen Sie "app / code / local / Envato / Customcron / Model / Customcron.php" mit den folgenden Inhalten.
setToEmail ('[email protected]') -> setBody ('Der Körper der benutzerdefinierten Cron-Task geht hier') -> setSubject ('Betreff: Benutzerdefinierte Cron-Task (alle 5 Minuten))' .date ("Ymd H: i: s ")) -> setFromEmail ('[email protected] ') -> setFromName (' Magento Store Admin ') -> setType (' html '); $ mail-> send ();
Wie bereits erwähnt, haben wir die Modellmethode "customcrontask" definiert. Bei dieser Methode senden wir einfach eine E-Mail mit dem Magento-E-Mail-Klassen-Dienstprogramm. Noch wichtiger ist jedoch, dass diese Methode regelmäßig aufgerufen wird, und zwar bei jedem Cron-Job, natürlich alle fünf Minuten.
Und schließlich sollten Sie sicherstellen, dass Sie in Ihrem System einen Cronjob-Eintrag erstellt haben. Unter Linux müssen Sie lediglich die folgende Zeile zu Ihrer Crontab-Datei hinzufügen.
5,10,15,20,25,30,35,40,45,50,55 * * * * / bin / sh /path/to/magento/site/cron.sh
Sie müssen lediglich "/ path / to / magento / site" durch den tatsächlichen Pfad der Magento-Installation ersetzen. Für Windows können Sie dasselbe tun, indem Sie geplante Aufgaben verwenden. In Windows müssen Sie jedoch die Datei "/path/to/magento/site/cron.php" verwenden, da "cron.sh" nicht unterstützt wird.
Es ist also ganz einfach, Ihre benutzerdefinierten Cron-Jobs in das Magento-Cron-System einzubinden! Das war es für heute und ich hoffe, Sie haben in Magento etwas Nützliches gelernt. Teilen Sie Ihre Gedanken mit dem untenstehenden Feed!