WordPress verfügt über etwas, das wp-cron genannt wird. Wenn du noch nichts darüber gelesen hast, ist das okay. Aber sei dir bewusst, dass du nicht ohne es leben kannst! Deswegen rate ich dir nicht, wp-cron zu deaktivieren.
Deaktiviere wp-cron
Dennoch müssen wir das standardmäßige Verhalten von WordPress wp-cron deaktivieren, indem wir folgende Zeile zur Datei wp-config.php hinzufügen:
define('DISABLE_WP_CRON', true);
Einen echten Cronjob einrichten
Öffne zuerst crontab von deinem Linux-Terminal aus:
sudo crontab -u www-data -e
Füge dann eine Zeile wie unten beschrieben hinzu.
*/5 * * * * curl http://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
oder
*/5 * * * * cd /var/www/example.com/htdocs; php /var/www/example.com/htdocs/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Bitte stelle sicher, dass du den korrekten Pfad zu wp-cron.php verwendest.
Ich empfehle Dir aber WP-CLI verwenden. Wie Du WP-CLI installiert, kann Du hier lesen:
*/5 * * * * cd /usr/share/nginx/www.domain.com; wp cron event run --due-now > /dev/null 2>&1
Oben wird wp-cron alle 5 Minuten ausgeführt. Du kannst */5 durch */10 ersetzen, um es alle 10 Minuten laufen zu lassen.
Der Unterschied zwischen den beiden Zeilen ist, dass die erste PHP-FPM (oder PHP-CGI) verwendet und die zweite PHP-CLI. CLI-Skripte haben keine Zeitlimits. Je nach deinem Setup kann das wünschenswert oder unerwünscht sein.
Zusammenfassung
In diesem Artikel wird erklärt, wie man WordPress‘ wp-cron durch einen effektiveren Linux-crontab ersetzt. Der Autor beschreibt, wie das standardmäßige wp-cron-Verhalten deaktiviert und stattdessen ein echter Cronjob eingerichtet wird, der alle 5 oder 10 Minuten ausgeführt wird. Es werden verschiedene Methoden vorgestellt, um wp-cron über PHP-FPM/PHP-CGI oder PHP-CLI auszuführen, wobei letztere keine Zeitlimits hat, was je nach Setup vorteilhaft sein kann. Der Artikel bietet auch eine Empfehlung zur Nutzung von WP-CLI für diese Aufgabe.