M. Cron aufsetzen
Was ist Cron?
Unter Unix-artigen Betriebssystemen dient Cron dazu, wiederkehrende Aufgaben/Programme nach frei definierbaren Zeitintervallen oder Zeitpunkten auszuführen; genutzt wird dies typischerweise in der System-Administration, beispielsweise für das regelmäßige Archivieren oder Löschen von Log-Dateien. Die Definition, welche Befehle/Programme (sog. Cronjobs) zu welchen Zeitpunkten ausgeführt werden sollen, erfolgt in der Crontab, einer tabellarisch aufgebauten Datei mit einer recht komplexen Struktur (siehe hierfür das Beispiel im Cron Wikipedia-Artikel http://de.wikipedia.org/wiki/Cron).
Cron und Drupal
Was hat Cron nun mit Drupal zu tun? Auch in Drupal macht es Sinn, gewisse Administrationsaufgaben automatisiert zu bestimmten Zeiten oder in festen Zeitintervallen durchführen zu lassen, um diese Prozesse nicht jedesmal umständlich von Hand anstoßen zu müssen, ein besonders typisches Beispiel hierfür ist die Suche in Drupal: Das optionale Core-Modul Search erstellt aus Performance-Gründen einen Index, in dem bei einer Suchanfrage nachgeschaut wird, ob das gewünschte Suchwort vorhanden ist. Werden in Drupal neue Inhalte der Datenbank hinzugefügt, fehlen diese zunächst im Suchindex - deshalb muss in regelmäßigen Abständen die im Drupal-Hauptverzeichnis liegende Datei cron.php aufgerufen werden, um den Index stets aktuell zu halten und somit zu verhindern, dass Suchanfragen ins Leere laufen, obwohl u. U. entsprechende Inhalte verfügbar wären.
Aber auch weitere Core-Module sind davon abhängig, dass cron.php regelmäßig aufgerufen wird, darunter Aggregator, Poll, Statistics, Watchdog und weitere.
Es existieren eine Reihe von Möglichkeiten, die Datei cron.php zu starten: Im Browser von Hand aufrufen (umständlich), cron auf dem Server über eine Crontab konfigurieren (benötigt root Administrationsrechte oder der Administrator muss das Einrichten von Cronjobs erlauben), einen externen Cron-Dienst wie bspw. www.webcron.org oder www.cronjob4you.de bemühen, oder aber auf das Drupal-Modul PoormansCron zurückgreifen.
PoormanCron-Modul
PoormansCron erlaubt es, einfach und schnell den Zeitintervall zu definieren, nach dem die nötigen Aktualisierungen durchgeführt werden.
Wie jedes Contrib-Modul muss es zunächst heruntergeladen und (üblicherweise) nach sites/all/modules entpackt und kopiert/verschoben werden; dann kann es unter Verwalten >> Strukturierung >> Module (Engl.: Administer >> Site Buildung >> Modules) aktiviert werden. Die Konfiguration ist schnell erledigt: Unter Verwalten >> Einstellungen >> PoormansCron (Administer >> Site configuration >> PoormansCron) können die folgenden Angaben gemacht werden (Default-Werte in Klammern):
- Zeitintervall in Minuten, nach dem der Cron-Lauf gestartet wird (60)
- Anzahl der Minuten, die gewartet wird nach einem fehlerhaften Cron-Lauf (10)
- ob erfolgreiche Cron-Läufe geloggt werden sollen oder nicht (ja)
- ob der Fortschritt von Cron-Läufen geloggt werden soll oder nicht (nein)
In der Regel reicht es aus, den ersten Wert, also den Zeitintervall, individuell anzupassen, die übrigen Werte können erst einmal übernommen werden. Hat man einige Zeit lang kontrolliert, dass alle Cronjobs korrekt durchgeführt werden, kann man evtl. das Loggen der erfolgreichen Cron-Läufe deaktivieren.
Nachteile von PoormansCron
Das Modul PoormansCron trägt seinen Namen nicht ganz zu Unrecht: Es handelt sich um die "Arme-Leute"-Version von Cron. Der Nachteil gegenüber einem "echten" Cron liegt darin, dass die nötigen Aktualisierungen nur erfolgen, wenn die Website einen Besucher hat, da der Cronjob nach dem ersten Seitenaufruf nach dem Ablaufen des definierten Zeitintervalls ausgeführt wird. Wenn also Cronjobs zu Zeiten ausgeführt werden sollen, an denen die Website keinen oder nur wenig Traffic hat, sollte man sicherheitshalber eine andere Lösung in Erwägung ziehen, siehe hierfür die (englische) Auflistung unter http://www.drupal.org/cron.
- Anmelden oder Registrieren um Kommentare zu schreiben
Übersetzung sinnvoll?
am 04.11.2007 - 12:44 Uhr
Hier würde ich gerne zur Diskussion stellen, ob eine Übersetzung des englischen Originals überhaupt sinnvoll ist: Beschrieben wird im Original die Arbeit mit cPanel, einem "web-based web-hosting control panel" - wer darüber nicht verfügt, kann aus dem Artikel keine neuen Erkenntnisse gewinnen. Ich würde hier eine Kurzeinführung in PoormansCron vorziehen, vielleicht kurz noch darauf eingehen, was Cron generell ist, wozu man es braucht, einen Link auf den entspr. Wikipedia-Artikel und gut ist.
Nur zu
am 08.11.2007 - 18:27 Uhr
Wenn das sinnvoller ist - nur zu! Es soll ja aktuell und hilfreich sein.
Dabei sein ist alles
Filmvorführung zur Einrichtung eines Cronjobs für Drupal
am 22.08.2008 - 12:38 Uhr
Wer zum obigen noch etwas ausführlichere Informationen haben will oder einen Screencast sehen möchte, wie ein echter Cronjob für lau eingerichtet werden kann, der möge sich an dieser Stelle behelfen.
Coole Sache
am 06.09.2008 - 14:04 Uhr
Hi tumblingmug,
vielen Dank für den Link zu diesem sehr hilfreichen Video! Jetzt funktioniert auch das Modul "Subscriptions" bei mir richtig, da jetzt regelmäßig Cronjobs ausgeführt werden!