Lösungen für WordPress Cron Probleme (WP-Cron)

Kategorie: Maschinenraum

Wie auch andere, vergleichbare Softwareprodukte bringt WordPress sein eigenes Cron-System mit. Dieses sorgt dafür, dass Aufgaben regelmäßig oder zu bestimmten Zeitpunkten ausgeführt werden — zumindest wenn alles gut geht. Und genau das ist das Problem.

Es gibt zwei wichtige Gründe warum geplante Beiträge oder andere Aufgaben in WordPress nicht zu dem Zeitpunkt ausgeführt werden, für den sie geplant waren. Um das zu erklären sollten wir kurz ausführen wie das WP-interne Cron-System funktioniert.

So funktioniert die eingebaute Cron-Funktion von WordPress

WordPress selbst pflegt in seiner Datenbank eine Liste an Aufgaben (Tasks), die regelmäßig oder zu einem bestimmten Zeitpunkt ausgeführt werden sollen. Dazu gehört z.B. das geplante Veröffentlichen eines Beitrags, aber auch weniger sichtbare Tätigkeiten wie bestimmte Wartungsaufgaben im Hintergrund. Diese Liste prüft WordPress immer wenn eine Seite aufgerufen wird auf Aufgaben die jetzt zu erledigen sind, in dem es die Systemzeit mit der für die Aufgabe hinterlegten Zeit überprüft. Ist eine oder mehrere Aufgaben fällig, werden diese alle während des Aufrufens dieser einen Seite ausgeführt. Dieser eingebaute Cron nennt sich WP-Cron.

Problemsituationen mit WP-Cron

Nun wird relativ einfach klar, dass die Ausführung dieser Tasks vom Aufrufen einer Seite abhängt. Wenn also bei einem wenig frequentierten Blog eine Aufgabe für Nachts um 2 Uhr geplant ist, kann es schon mal passieren, dass bis morgens um 7 niemand vorbei kommt und eine Seite abruft. Damit wird auch die Aufgabe nicht ausgeführt.

Ähnliche Probleme können beim Einsatz von Caching-Plugins auftreten, da diese die Ausgabe der Seite zur Beschleunigung derselben in fertiger Form ablegen und nicht bei jedem Aufruf alle WordPress-Funktionen ausführen. Das ist ganz normal und ist ein Grund warum sich die Seite damit schneller abrufen lässt. Für den WP-Cron ist das natürlich von Nachteil.

Lösungen für Probleme mit WP-Cron

Die einzige wirklich sinnvolle Möglichkeit bei solchen Problemen zu einer zuverlässigen Ausführung der Aufgaben zu gelangen ist die eingebauten Aufrufe zu deaktivieren und die Ausführung zeitgesteuert von außen auszulösen. Dieses externe Auslösen kann dann je nach Situation über die Cron-Funktion des eigenen Webhosters oder über einen Cron-Service geschehen. Beispiele für Anbieter von solchen Diensten finden sich am Ende des Artikels.

Was ist also zu tun? Zuerst muss die eingebaute Funktion deaktiviert werden. Das geht über folgenden Eintrag in der wp-config.php (siehe unsere Artikel zum Bearbeiten von WordPress Dateien und über die wp-config.php):

define('DISABLE_WP_CRON', true);

Um weitere Probleme zu vermeiden sollte der Eintrag direkt unter dieser Zeile erfolgen:

define('DB_COLLATE','');

Im Anschluss muss dann der externe Aufruf eingerichtet werden. Dieser sollte dafür sorgen, dass die Datei wp-cron.php im Stammverzeichnis des Blogs aufgerufen wird. Die gesamte URL sieht dann ungefähr so aus:

https://deineblogdomain.xx/wp-cron.php

oder auch

https://deineblogdomain.xx/blog/wp-cron.php

wenn das Blog sich in einem Unterverzeichnis befindet.

Die Häufigkeit des Aufrufs ist im Grunde nicht so wichtig. Wichtig zu wissen ist aber, dass Aufgaben dann immer nur zum Zeitpunkt des Aufrufs erfolgen können. Erfolgt der Aufruf also zum Beispiel alle 30 Minuten, immer zur vollen und zur halben Stunde, dann können Beiträge die für 20:15 Uhr geplant sind immer erst um 20:30 Uhr veröffentlicht werden. Ein Aufruf einmal pro Minuten ist natürlich möglich, belastet der Server aber evtl. mehr als gewollt. Irgend etwas zwischen 5 und 30 Minuten wäre wohl empfehlenswert, je nach eigenem Geschmack und etwaigem Tarif eines kostenpflichtigen Cron-Service.

Cron Plugins helfen den Überblick zu behalten

Nachdem das eigentliche Problem behoben ist, gilt es noch zu erwähnen, dass es eine Handvoll Plugins gibt, die dabei helfen, einen Überblick über die Liste der geplanten Aufgaben zu erhalten. Manche erlauben auch das hinzufügen eigener Tasks oder das Löschen bereits vorhandener. Diese sind in der Regel eher für fortgeschrittene Benutzer empfehlenswert.

Ein gutes Plugin, das wir selbst von Zeit zu Zeit einsetzen ist WP-Crontrol.

WordPress Cron Plugin

Es erlaubt das Löschen, Bearbeiten und sofortiger Ausführen geplanter Aufgaben und das Hinzufügen neuer.

Fazit

Durch das Deaktivieren der internen WP-Cron-Funktion und der externen, manuellen Steuerung der Aufrufe wird die Zuverlässigkeit geplanter Funktionen (z.B. geplante Veröffentlichung von Beiträgen) erhöht. Zudem ist die Performance des Blogs besser unter Kontrolle weil nicht mehr einzelne Seitenaufrufe durch eventuell gerade anstehende Aufgaben blockiert werden.

Links


Dir hat der Artikel geholfen und du möchtest mit unseren WordPress Tipps, Tricks und Anleitungen auf dem Laufenden bleiben? Dann trag dich einfach in unseren kostenlosen Newsletter ein ...


Über den Autor

Frank Helmschrott

Ich arbeite seit über 15 Jahren aktiv mit WordPress und habe meine Kompetenz speziell im Bereich einfaches, aber wirkungsvolles Design ausgebaut. Genau dieses Know How ist auch in den gemeinsam mit Nils erstellten WP ohne Stress Online Kurs eingeflossen.


Diese Beiträge könnten dir auch gefallen

Welchen WordPress Webhoster wählen?

Welchen WordPress Webhoster wählen?

WordPress: Vorteile und Nachteile

WordPress: Vorteile und Nachteile
  • Vielen Dank Herr Helmschrott,

    Für mein Problem mit wp-cron brauchte ich genau diese Anleitungen/ Codes. Danke für die einfache Erklärung, die sogar ich verstehen und umsetzen konnte.

    Herzliche Grüsse aus St. Gallen

    Tedora

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >