Unter einem Cron-Job
versteht man das zeitgesteuerte Ausführen von Aufgaben. Diese Aufgaben werden in einer Cron-Tabelle definiert, die dann von einem Cron-Dienst möglichst zeitnah und regelmäßig überprüft wird, und der die fälligen Jobs - in der Regel Skripte - startet.
Die in Wordpress eingebaute Cron-Lösung arbeitet folgendermaßen:
Im Browser wird eine beliebige Seite meiner Wordpress Installation aufgerufen.
Das PHP-Skript wp-cron.php wird aufgerufen.
Es arbeitet die Cron Tabelle ab, und schau welche Einträge gerade dran sind ausgeführt zu werden, und startet diese wenn sie fällig, oder überfällig sind.
Nachteil 1: Das Ausführen der Jobs ist vom Aufrufen einer Seite abhängig. Ist auf meiner Webseite gerade nix los, werden auch keine Cron-Jobs ausgeführt, egal was in der Wordpress-Crontab steht.
Nachteil 2: Der Aufruf der Seite kann sich verlangsamen, je nach dem wie viele Jobs gerade fällig zur Ausführung sind.
Nachteil 3: Wordpress-Caches rufen wp-cron.php auch nicht auf.
Lösung für die Probleme:
Den Integrierten Cron-Aufruf deaktivieren:
In der Datei wp-config.php
unter der Zeile define('DB_COLLATE','');
folgenden Eintrag machen: define('DISABLE_WP_CRON', true);
Beim Webhoster einen Cron-Job einrichten, der das wp-cron.php Skript regelmäßig aufruft:
Typ: PHP-Skript ausführen
Pfad zum PHP Skript (bei mir, relativ zu Ihrem Webhosting-Paket): web/wp-cron.php
Zeitplan, Häufigkeit: Stündlich (Sinnvoll wäre sicherlich alle halbe Stunde, aber das beschränkt mein Web-Hoster)
Alternativ, zusätzlich, oder wenn der eigene Hoster keinen Cron-Dienst anbietet, käme ein externer Dienst in Frage, wie zB.