Permalink

16

WordPress auf echten Cronjob umstellen

WordPress hat ein kleines Cronjob-System integriert, mit dem bestimmte Aufgaben immer regelmäßig ausgeführt werden. So prüft WordPress zum Beispiel zwei Mal am Tag, ob es neue Updates für den WordPress-Core, die Plugins oder die Themes gibt.

Dieses Cronjob-System hat allerdings eine kleine Schwäche: Es ist genau genommen gar keins. WordPress kann nur dann regelmäßig Aufgaben ausführen, wenn die Seite besucht wird. Jedes Mal, wenn ein Besucher die Webseite aufruft, überprüft WordPress, ob irgendwelche Aufgaben erledigt werden müssen.

Wenn aber kein Besucher die Seite aufruft, werden auch keine Aufgaben erledigt. Das kann ärgerlich sein, wenn ein Plugin regelmäßige Daten lesen und abspeichern soll (zB. Twitter-Statistiken oder ähnliches) oder man die WordPress-Funktion „Via E-Mail schreiben“ verwendet.

Der beste Weg, dieses Problem zu beheben, ist, einen richtigen Cronjob einzurichten.

WordPress vorbereiten

Zuerst müssen einige Vorbereitungen für WordPress getroffen werden.

Wenn ein Besucher die Webseite besucht, überprüft WordPress, ob Aufgaben erledigt werden müssen. Ist das der Fall, wird eine neue http-Verbindung zum Server aufgebaut und die Datei wp-cron.php aufgerufen, die dann die Aufgaben erledigt. Dabei wartet WordPress aber nicht, bis dieser Prozess beendet ist, sondern fährt mit der Generierung der Webseite für den User fort. Der Besucher bekommt davon also gar nichts mit.

Konkret sollte man die Überprüfung nach neuen Aufgaben bei Seitenaufruf abstellen. Das ist zwar nicht unbedingt notwendig, spart aber etwas Zeit für den Seiteaufbau und unnötige Rechenleistung.

Um die Überprüfung abzuschalten, muss folgende Zeile in die wp-config.php geschrieben werden:

define('DISABLE_WP_CRON', true);

Update (30.10.2011): In der wp-config.php setzt man diese Zeile am besten direkt über die Zeile mit dem Kommentar „/* That’s all, stop editing! Happy blogging. */

Damit werden ab sofort nur noch Cronjobs überprüft, wenn explizit die wp-cron.php aufgerufen wird. Und diese Aufgabe kann jetzt von einem richtigen Cron erledigt werden.

“Echten“ Cronjob einrichten

Wenn der eigene Hoster Cronjobs anbietet, benutzt man diese am besten. Wenn nicht, kann man auch das kostenlose Angebot von cronjob.de nutzen, eine vorherige Registrierung vorausgesetzt.

Um einen neuen Cronjob anzulegen, sollte man bei jedem Anbieter ein solches Formular finden können. (Wenn auf dem Server Confixx eingerichtet ist, findest du die Cronjob-Verwaltung unter Einstellungen -> Crontab)

Hier müssen jetzt einige Angaben gemacht werden. Die linken 5 Felder bestimmen die Terminierung, in der ein Befehl (rechtes Feld) ausgeführt werden soll. Möchte man nun einstellen, dass die wp-cron.php von WordPress jede Stunde aufgerufen wird, dann füllt  man die Felder folgendermaßen aus:

Als Befehl habe ich diese Zeile eingetragen: (Die URL muss natürlich noch entsprechend angepasst werden)

curl -Iso /dev/null http://www.example.com/wp-cron.php
Anmerkung für FortgeschritteneIch weiß, dass es auch mit wget funktioniert, allerdings ziehe ich persönlich curl vor, da curl relativ mehr Funktionen bietet und auch von meinem Hoster empfohlen wird.

Wer sich auskennt, kann natürlich auch wget verwenden.

Um WordPress jede 30 Minuten nach Aufgaben überprüfen zu lassen, stellt man folgendes ein:

Eine gute Erklärung zur Terminierung von Cronjobs findet man auch im Wikipedia-Artikel zu Cronjobs.

Weitere Cronjobs mit WordPress

Jetzt kann es vorkommen, dass man mehrere Webseiten regelmäßig aufrufen möchte, aber der Hoster nur einen Cronjob erlaubt. Hier kann wieder WordPress weiterhelfen.

Mithilfe des Plugins Utopia Cron lassen sich weitere Cronjobs erstellen, die aber wieder auf dem Cronjob-System von WordPress basieren.

Das Plugin ist zwar schon etwas in die Jahre gekommen und wurde auch lange nicht mehr gewartet, aber es funktioniert noch unter WordPress 3. Man gibt einfach ein, welche URL nach welchen Zeitabständen aufgerufen werden soll. Alternativ kann man auch einen genauen Start-Zeitpunkt auswählen. Damit lassen sich dann auch Cronjobs zu jeder vollen Stunde etc. realisieren.

Hinweis: Aus Performance-Gründen lässt sich jede Webseite mit Utopia Cron nur maximal alle 5 Minuten aufrufen.

HinweisAus Performance-Gründen lässt sich jede Webseite mit Utopia Cron nur maximal alle 5 Minuten aufrufen.

Der Cronjob des Hosters sollte dann entsprechend dem Cronjob mit der kleinsten Terminierung angepasst sein.

Zusammenfassung:

Wenn man mehrere WordPress-Installationen oder andere Webseiten hat, die regelmäßig aufgerufen werden müssen, lässt sich das mit einem Cronjob (beim eigenen Hoster oder kostenlosen Cronjob-Anbieter) und einer WordPress-Installation realisieren.

Dazu fügt man in der wp-config.php die entsprechende Zeile hinzu und installiert das Plugin Utopia Cron. Dann richtet man einen Cronjob auf die wp-cron.php von WordPress ein und in den Plugin-Einstellungen benennt man jede weitere Webseite, die aufgerufen werden soll.

Fertig.

Wenn dir diese Anleitung geholfen hat, oder du noch Fragen zur Einrichtung hast, würde ich mich über einen Kommentar freuen.

Autor: Artur

Der technikinteressierte und bibeltreue Christ Artur Weigandt bloggt über Datenschutz, Webprogrammierung, sicheren Umgang mit dem Internet und die Bibel. Er arbeitet an der christlichen Community youthweb.net mit, programmiert Webapplikationen und beteiligt sich bei diversen Open Source Projekten.

16 Kommentare