Magento Cronjob einrichten

 Keine Kommentare zu diesem Tutorial

Dieses Tutorial befasst sich damit, wie man in Magento einen Cronjob einrichtet. Mit einem Magento Cronjob können zeitgesteuert Skripte vom Webserver aufgerufen werden, ohne das man manuell eingreifen muss. Dies kann sehr praktisch für wiederkehrende Aufgaben sein, um diese nicht immer manuell ausführen zu müssen. Manche Bestandteile in Magento erfordern ein Skript das regelmäßig ausgeführt wird, diese sind unter anderem:

  • Katalogpreis-Regeln
  • Versenden von Newslettern
  • Generieren von (Google) Sitemaps
  • Kunden-Benachrichtigungen / Benachrichtigungen (Produkt Preisänderung, Produkt wieder im Lager)
  • Automatische Aktualisierung der Währungskurse
  • Logs-Bereinigung

Einrichtung eines Cronjobs

Für die Einrichtung sind vier Schritte nötig. Zu Begin ist ein Eintrag in der Crontab des Servers zu machen. anschließend die die Konfiguration in Magento sowie dem Modul. Zu guter letzt noch die visuelle Überwachung.

Magento Cronjob mit Crontab erstellen

Magento ermöglicht es Ihnen, benutzerdefinierte Aufgaben in einer XML-Konfiguration zu erstellen, in ähnlicher Weise wie dem UNIX-Crontab-Stil. Jedes Modul lässt sich mit der im jeweiligen Modul vorhanden config.xml per Cronjob ansteuern. Hier ist ein Beispiel aus app / code / core / Mage / CatalogRule / etc / config.xml der Magento Version 1.9.3.2:

Zur Erläuterung dieses Cronjob <crontab> ab Zeile 188:

*/1 heißt alle 1 Minuten
* in jeder Stunde
* an jedem Tag
* in jedem Monat
* in jedem Jahr

In dem oben genannten Cronjob heißt das also das CatalogUpdate soll jede Stunde ausgeführt werden.

Wenn ein PHP-Skript auf dem Webserver liegt kann man es, wenn man es jeden Tag um 01:00 Uhr ausführen will so starten:
00 01 * * * lynx –dump http://www.beispiel.de/pfad/zum/skript.php

Weitere Möglichkeiten den Cronjob zu starten

Wenn Sie keinen Zugriff auf Crontab auf Ihrem Server haben, um den Cronjob einzurichten, können Sie sich die Seite, die in regelmäßigen Abständen ausgeführt werden muss als Lesezeichen im Browser setzen (http://www.beispiel.de/pfad/zum/cron.php). Jedes Mal, wenn Sie die Seite aufrufen, wird die geplante Aufgabe auf dem Server ausgeführt.

Wenn keine der oben genannten Möglichkeiten funktioniert, gibt es eine Reihe von Online-Diensten (Auflistung unter http://onlinecronservices.com) die nützlich sein können. Viele sind kostenlos, aber es gibt Einschränkungen bezüglich der Ausführungs-Frequenz oder Jobanzahl.

Verwaltung der Cronjobs in Magento

In Magento gibt es eine Datenbanktabelle in der alle Cronjobs gespeichert werden. Ist ein Cronjob korrekt angelegt kann man ihn in der tabelle „cron_schedule“ finden. Dort wird neben dem Namen auch der aktuelle Status, das Datum sowie die Uhrzeit gespeichert.

Im Backend findet man unter System > Konfiguration > Erweitert > System den Tab „Cron“. In diesem Tab wird Magento konfiguriert, wie es mit den Cronjobs umgehen soll.

Übersicht der Magento Cronjobs

Von Haus aus gibt es leider keine schöne Übersicht welche Cronjobs es gibt, welche Cronjobs anstehen oder welche evtl deaktiviert sind. Wer eine schöne Übersicht sucht wird bei Fabrizio Branca fündig, denn dieser hat einen Magento Cron Scheduler programmiert, der genau diese Aufgaben übernimmt. Alternativ gibt es den AOE Scheduler auf Magento Connect.

Magentos integrierte Cronjobs

Die folgenden Cronjobs kommen zusammen mit der Magento-Installation (das unten stehende Beispiel ist aus Version 1.7). Ein standardmäßig auskommentierter Cronjob ist mit (*) gekennzeichnet:

Module Cronjob Cron Syntax Frequenz
Log log/cron:: logClean System→Log Cleaning
log/aggregation:: run(*) */10 * * * * Every 10 minutes
Tax tax/observer:: aggregateSalesReportTaxData 0 0 * * * Daily at midnight
CatalogRule catalogrule/observer:: dailyCatalogUpdate 0 1 * * * Daily at 1 am
Sales sales/observer:: cleanExpiredQuotes 0 0 * * * Daily at midnight
sales/observer:: aggregateSalesReportOrderData 0 0 * * * Daily at midnight
sales/observer:: aggregateSalesReportShipmentData 0 0 * * * Daily at midnight
sales/observer:: aggregateSalesReportInvoicedData 0 0 * * * Daily at midnight
sales/observer:: aggregateSalesReportRefundedData 0 0 * * * Daily at midnight
Sitemap sitemap/observer:: scheduledGenerateSitemaps Google Sitemap→Generation Settings
Directory directory/observer:: scheduledUpdateCurrencyRates Currency Setup→Scheduled Import Settings
CatalogIndex catalogindex/observer:: reindexAll(*) 0 2 * * * Daily at 2 am
catalogindex/observer:: runQueuedIndexing(*) * * * * * Every time cron is run
ProductAlert productalert/observer:: process Catalog→Product Alerts Run Settings
Catalog catalog/product_indexer_price:: reindexAll 0 2 * * * Daily at 2 am
SalesRule salesrule/observer:: aggregateSalesReportCouponsData 0 0 * * * Daily at midnight
Newsletter newsletter/observer:: scheduledSend */5 * * * * Every 5 minutes

Autor

Sebastian

Ich interessiere mich für eCommerce-Themen, vor allem im Zusammenhang mit dem Shopsystem Magento Commerce sowie alles rund um Web-Entwicklung und den damit verbundenen Möglichkeiten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*