WordPress – wp-cron.php3 min Lesezeit

05/05/2019 - Fuchs

Wer von euch schon Mal eine WordPress Seite erstellt hat, weiß was die wp-cron ist und was sie tut.

Aber um es nochmal kurz auf den Punkt zu bringen, das ist die Datei die für eure zeitgesteuerten Aktionen zuständig ist. Wenn ihr also einen Post für eine bestimmte Uhrzeit zur Veröffentlichung vormerken, ist das die „config“ Datei die das regelt und auch ausführt.

Jetzt gibt’s da nur ein Probelm, weil es kein echtes Server Cron ist, kann die Datei nicht von alleine starten. In WordPress ist es so geregelt das die wp-cron.php immer dann angeschubst wird, wenn ein Seitenaufruf geschieht. Ihr braucht also guten Traffic um eure Seite automatisiert arbeiten zu lassen. Wir brauchen also eine Möglichkeit unsere Seite am laufen zu halten auch ohne viele Besucher. Auserdem liest man immer wieder das die cron.php bei vielen anliegenden Aufgaben die Website verlangsamen kann. Das ist hauptsächlich der Fall weil das Script immer wieder durch alle Aufgaben geht und feststellt ob eine Aufgabe zu erledigen ist.

Wie lösen wir das nun?

Das gute an php ist, das die Scripte auch vom terminal aus ausgeführt werden können. Es funktioniert also wenn wir im Terminal folgenden Befehl eingeben

php /var/www/html/wp-cron.php

– Dabei sollte klar sein das wir natürlich den Pfand entsprechend unserer Installation anpassen. 😉 –

Und alles was wir im Terminal ausführen können, kann ein cron job auch für uns erledigen. Also ein zeit gesteuerter Aufruf des Scripts. Wichtig dabei ist das wir nur absolute Pfade verwenden um Fehler zu vermeiden. Somit ändert sich unser Code von weiter oben folgendermaßen

/user/bin/php /var/www/html/wp-cron.php

Gut, dann müssen wir dem cronjob noch sagen, wann er den was machen soll. Das passiert über den folgenden Code.

Womit sich der Job dann auf folgende codezeile ändert.

*/10 * * * * /user/bin/php /var/www/html/wp-cron.php

– In diesem Fall rufe ich das Script alle 10 min. Prüft eure Zeiten auf crontab.guru

Dann legen wir einen Cron job (crontab) an mit

crontab -e

Hier im Editor eure Codezeile eintragen, speichern und los kann es gehen.

Jetzt prüfen wir ob der Job auch läuft. Dazu installieren wir ein Add on’s.

WP-Cron Status Checker

Optimierung

Wenn wir nun sicher sind das unser Cron Job richtig läuft, können wir die wp-cron.php aus dem „autocall“ nehmen. Wie ja oben schon erwähnt, wir das Script immer dann gestartet wenn die Website aufgerufen wird. Das kann bei vielen anliegenden Jobs den Aufruf der Website verzögern und das wollen wir ja nicht. 🙂

Deshalb deaktivieren wir jetzt in der Config diesen Aufruf. Dazu öffnen wir im Editor die wp-config.php. Da fügen wir die folgende Zeile hinzu

define('DISABLE_WP_CRON', true);

ACHTUNG!

Wenn dein Cronjob nicht funktioniert oder nicht richtig eingegeben wurde, funktioniert keine deiner Automatischen aufgaben mehr! Also keine Email, kein auto post, keine Kommentare, keine Benachrichtigungen!

Sei dir also sicher was du tust!

Update – 14.07.2018

Ich hab die Option

define('DISABLE_WP_CRON', true);

Wieder aus der config raus genommen, da ich das Gefühl hab, das die Website nicht so rund läuft und einige Aktionen zeitverzögert eintreffen. Da dieser Blog eh nur sehr sporadisch Besuch bekommt, ist es also keine Problem das WP einfach in der Standard config läuft. 🙂

Schreibe einen Kommentar

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