WordPress Cronjobs – Für Mehr Performance

WordPress cronjobs
26. August 2020
WordPress Cronjobs (per wp-cron.php) sind eine integrierte Funktion, mit der sich zeitgesteuerte Aufgaben automatisiert ausführen lassen. Doch die wp-cron.php kann Probleme wie verlängerte Ladezeiten deiner Webseite verursachen. Für deine WordPress-Installation ist es daher zu empfehlen, den WordPress Cron zu deaktivieren und ersatzweise einen echten Cron-Job zur Automatisierung von WordPress-Aufgaben einzurichten. Im folgenden Beitrag erfährst du, warum wp-cron.php problematisch sein kann, wie sich die interne WordPress Cron Funktion deaktivieren lässt und welche Alternativen sich dir zur Automatisierung von WordPress-Aufgaben bieten.

Inhaltsverzeichnis
  1. Was ist ein Cron-Job?
  2. Wozu benötige ich in WordPress Cron-Jobs und was ist WP-Cron (wp-cron.php)?
  3. Warum macht es Sinn, WordPress Cron zu deaktivieren?
  4. Wie deaktiviere (und ersetze) ich WP-Cron? – 1-Klick-Komplettlösung!
  5. Wie ersetze ich WP-Cron manuell?


1. Was ist ein Cron-Job?

was sind wordpress cronjobs?
Cron ist eine Bezeichnung, die ursprünglich aus der Unix-Welt stammt. Mit Hilfe eines sogenannten Cron-Systemdiensts lassen sich einmalige oder wiederkehrende Aufgaben und Prozesse auf einem Rechner zeitgesteuert ausführen. Der Begriff Cron-Job hat sich im Computerumfeld etabliert. Er wird oft als Synonym für die automatisierte, zeitgesteuerte Ausführung bestimmter Aufgaben verwendet. Der Administrator kann wählen, zu welcher Uhrzeit, an welchem Tag oder in welchen Intervallen Prozesse gestartet werden. Das Content Management System (CMS) WordPress kennt den Cron-Begriff ebenfalls. Im CMS ist eine Art Pseudo-Cron-System integriert, das sich für die Automatisierung von WordPress-Aufgaben nutzen lässt.

2. Wozu benötige ich in WordPress Cron-Jobs und was ist WP-Cron (wp-cron.php)?

In WordPress-Installationen müssen bestimmte Aufgaben regelmäßig oder zu festgelegten Zeitpunkten automatisch erledigt werden. Typische Beispiele für solche Aufgaben sind das Erstellen von Datensicherungen deiner Website per Backup-Plugin, das Prüfen auf Updates oder die zeitgesteuerte Veröffentlichung von Inhalten wie Blog-Beiträgen.
In deiner WordPress-Installation übernimmt diese Aufgabe, wie bereits erwähnt, das Pseudo-Cron-System WP-Cron (wp-cron.php). Es simuliert eine Art Cron-Systemdienst, ist aber, was Zuverlässigkeit und Performance angeht, nicht unproblematisch. Im Hauptverzeichnis deiner WordPress-Installation findet sich eine Datei mit dem Namen wp-cron.php. Jedes Mal, wenn eine Seite deines Internetauftritts aufgerufen wird, wird diese Datei ausgeführt. Während der Ausführung prüft WordPress, ob der Zeitpunkt für eine geplante Aufgabe gekommen ist und sie jetzt erledigt werden muss.
Falls es dich interessiert, welche Aufgaben dein WordPress dadurch regelmäßig durchführt, kannst du das Plugin WP-Crontrol installieren. Mit dem Tool kannst du darüber hinaus ganz bequem alle Einträge verwalten und bearbeiten und beispielsweise auch Cron-Zeitpläne oder -Ereignisse hinzufügen.

wordpress cronjobs verwalten via wp crontrol
Das Plugin WP Crontrol im Backend – hier siehst du unter anderem alle Cron-Tasks


Nach der Installation findest du diese Möglichkeiten im WordPress Backend und Werkzeuge > Cron-Ereignisse. Für die simple Optimierung deiner Seite ist das Tool aber nicht unbedingt notwendig, wie du im Folgenden sehen wirst.

3. Warum macht es Sinn, WP-Cron zu deaktivieren?

WP-Cron ist nicht mit einem echten Cron-Systemdienst eines Unix-Servers vergleichbar. Die Datei wp-cron.php wird immer nur dann ausgeführt, wenn eine deiner Internetseiten angefragt und geladen wird. Aus folgenden beiden Gründen macht es daher Sinn, WP-Cron zu deaktivieren:

1) Schlechte Performance deiner WordPress-Website

WP-Cron sorgt in vielen Fällen für eine schlechtere Performance und verursacht lange Ladezeiten. Denn jedes Mal, wenn eine Seite aufgerufen wird, aktiviert WordPress WP-Cron und führt die Datei wp-cron.php aus. Selbst wenn du nur einmal pro Woche einen Backup eingeplant hast, wird das Cron-Prozedere bei jedem Seitenaufruf durchlaufen. Auf den ersten Blick ist klar, dass dieses Verhalten bei besucherstarken Seiten äußerst ineffizient ist und den Server, auf dem deine Internetseite gehostet ist, belastet. (Hier findest du übrigens unseren ausführlichen Beitrag: Tutorial zur Optimierung deiner WordPress-Performance.)

2) Keine zuverlässige Ausführung der Cron-Jobs

Angenommen, du hast einen Backup-Job für 24 Uhr eingeplant. Deine Seite ist aber noch nicht sehr bekannt und wird relativ selten besucht. Am nächsten Morgen möchtest du einige Veränderungen an der WordPress-Installation vornehmen und gehst davon aus, dass in der Nacht ein Backup erstellt wurde. Da aber bisher niemand eine deiner Seiten aufgerufen hat, hat WordPress die wp-cron.php nicht ausgeführt und auch keine Datensicherung erstellt. Du kannst dich daher nicht darauf verlassen, dass die per WP-Cron geplanten Aufgaben genau zum gewünschten Zeitpunkt ausgeführt werden.

4. Wie deaktiviere (und ersetze) ich WP-Cron? – 1-Klick-Komplettlösung für maximale Performance

Wie im vorigen Abschnitt beschrieben, ist WP-Cron aus mehreren Gründen problematisch. Die Pseudo-Cron-Funktion von WordPress verursacht eine gewisse Unzuverlässigkeit bei der zeitlichen Ausführung der Cron-Jobs oder führt zu Performance-Problemen. Deshalb macht es Sinn, WP-Cron zu deaktivieren und einen alternativen Cron-Systemdienst zu nutzen. Den WordPress Cron zu deaktivieren, um zu verhindern, dass die Datei wp-cron.php bei jedem Seitenaufruf ausgeführt wird, funktioniert ganz einfach.
In Plesk und somit auch für HostPress-Kunden braucht es bloß einen Klick. Mehr dazu findest du auch hier noch einmal in unserem Helpdesk.
wp-cron.php deaktivieren
1 Klick für HostPress-Kunden im WordPress Toolkit von Plesk – deaktiviert wp-cron.php + erstellt echten Cronjob zum Ersatz

Du brauchst bloß -wie im Screenshot dargestellt- die wp-cron.php in Plesk über den Schieberegler zu deaktivieren. Denn Plesk erstellt damit automatisch eine geplante Aufgabe zur Kompensation, die den Pseudo-Cronjob von WordPress halbstündig ausführt – also einen wirklich zeitgesteuerten echten Cronjob.
Alternativ kannst du natürlich auch die Datei wp-config.php in einem Editor aufrufen und folgende Befehlszeile hinzufügen, um den WordPress Cron zu deaktivieren:
define(’DISABLE_WP_CRON’, true);

Der Befehl ist direkt nach der Zeile mit dem Inhalt „That’s all, stop editing! Happy blogging.” einzufügen. Nach dem Speichern von wp-config.php führt WordPress die Datei wp-cron.php nicht mehr bei jedem Seitenaufruf aus, sondern nur, wenn sie explizit beispielsweise von einem System-Cron aufgerufen wird. Diesen Cron-Systemdienst musst du im Allgemeinen noch einrichten. (Hier geht’s zu unserem Beitrag: Grundlagen und Tipps zur wp-config.php, der wichtigsten Datei in WordPress.)

5. Echte zeitgesteuerte Cronjobs einrichten – So kannst du den WordPress Cron manuell ersetzen!

Auch nach der Deaktivierung von WP-Cron soll das zeitgesteuerte Ausführen von Aufgaben in WordPress noch möglich sein. Hierfür kannst du einen echten Cron-Job einrichten, der die Datei wp-cron.php zu fest definierten Zeiten ausführt. Beispielsweise lässt sich der echte Cron-Job so konfigurieren, dass wp-cron.php alle 30 Minuten aufgerufen wird. Dadurch verschwendest du weniger Server-Ressourcen, kannst dir aber gleichzeitig sicher sein, dass anstehende zeitgesteuerte Aufgaben auch ohne Seitenaufrufe mindestens alle halbe Stunde geprüft und erledigt werden. Wie im vorherigen Abschnitt erklärt, erledigt Plesk das von alleine, wenn du wp-cron.php per Schieberegler im WordPress Toolkit deaktivierst.

wp cronjob - echter cronjob in plesk
In Plesk sind es drei einfache Schritte zum anstoßen des Cronjobs


Wenn du kein Plesk nutzt, gibt es möglicherweise ähnliche Funktionen in deinem Kundencenter. Frag im Zweifel einfach mal bei deinem Support nach, wie es funktioniert. Wer eigene Server betreibt, kann natürlich auch über die Linux-Konsole des Webservers Cronjobs via Crontab einrichten. Für HostPress-Kunden und sonstige Plesk-User ist das Einrichten eines echten Cron-Jobs entweder direkt über das WordPress-Toolkit oder per Kundencenter in Plesk möglich. (Hier findest du nochmal unsere einfache Schritt-für-Schritt-Anleitung, um Cronjobs in Plesk anzulegen) Bist du im Kundencenter eingeloggt, erreichst du die Funktion zum Einrichten eines neuen Cron-Jobs über den Menüpunkt rechts „Geplante Aufgaben“. Am einfachsten geht es im Grunde über den Aufgabentyp „URL abrufen“, wobei du nämlich bloß noch die Adresse deiner Webseite einzugeben brauchst. Es lassen sich ebenfalls beliebige Linux-Systembefehle zeitgesteuert ausführen. Unter anderem auch das Ausführen des PHP-Skripts wp-config.php zu definierten Zeiten. Darüber hinaus kannst du eine Beschreibung des Cron-Jobs einfügen, die PHP-Version festlegen oder dir automatisch bei erfolgreicher Ausführung oder bei einem Fehler eine E-Mail-Benachrichtigungen zusenden lassen. Für die allermeisten Setups genügt die Standard-Konfiguration, den WP-Cron einmal täglich anzustoßen. Nachdem alle Einstellungen mit „Ok“ bestätigt sind, ist der echte Cron-Job angelegt und ruft zu den von dir definierten Zeiten wp-config.php auf, was für die zeitgesteuerte Ausführung der in WordPress definierten Aufgaben sorgt.
Johannes
Schreibe einen Kommentar

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