Ein Cron-Job ist eine zeitgesteuerte Aufgabe, die auf einem Server automatisch zu einem festgelegten Zeitpunkt oder in einem festgelegten Intervall ausgeführt wird, ohne dass ein Mensch manuell eingreifen muss.
Was bedeutet das?
Der Begriff stammt vom Unix-Werkzeug „cron“, dessen Name sich vom griechischen Wort „chronos“ (Zeit) ableitet. Cron läuft als Hintergrunddienst auf Linux- und Unix-Servern und führt geplante Aufgaben zuverlässig zum vorgesehenen Zeitpunkt aus. Die Konfiguration erfolgt in einer sogenannten crontab (cron table), wobei ein einfaches Format aus fünf Zeitangaben für Minute, Stunde, Tag, Monat und Wochentag sowie dem auszuführenden Befehl besteht. Der Eintrag 0 3 * * * /usr/bin/php /var/www/backup.php bedeutet beispielsweise: Führe das Backup-Skript jeden Tag um 3:00 Uhr morgens aus.
Cron-Jobs sind das Rückgrat vieler automatisierter Server-Prozesse: Sie versenden Newsletter nach Zeitplan, erstellen täglich Datenbank-Backups, importieren Preisdaten von externen Quellen, bereinigen temporäre Dateien, prüfen auslaufende SSL-Zertifikate und senden automatische Erinnerungs-E-Mails. Ohne Cron-Jobs müssten Administratoren diese Aufgaben manuell anstoßen oder eigene Daemon-Prozesse aufsetzen.
WordPress bringt ein eigenes Cron-System mit, das sogenannte WP-Cron, implementiert in der Datei wp-cron.php. Es unterscheidet sich grundlegend von einem echten Server-Cron. Laut der offiziellen WordPress-Entwicklerdokumentation wird WP-Cron nicht nach einem festen Zeitplan ausgeführt, sondern bei jedem Seitenaufruf geprüft, ob geplante Aufgaben fällig sind. Wenn eine Aufgabe für 14:00 Uhr eingeplant ist, aber bis 17:00 Uhr kein Besucher die Seite aufruft, verzögert sich die Ausführung entsprechend. WP-Cron speichert fällige Aufgaben in einer Warteschlange; sie werden beim nächsten Seitenaufruf nachgeholt.
Beispiel aus der Praxis
WordPress nutzt WP-Cron für wichtige Kernfunktionen: das Veröffentlichen terminierter Beiträge, die automatische Prüfung auf Plugin- und Core-Updates sowie das Versenden geplanter E-Mails. Plugins wie WooCommerce, Newsletter-Systeme und Backup-Plugins (beispielsweise UpdraftPlus) fügen eigene geplante Aufgaben in die WP-Cron-Warteschlange ein. Eine Übersicht über alle registrierten WP-Cron-Ereignisse und ihren nächsten geplanten Ausführungszeitpunkt bietet das kostenlose Plugin „WP Crontrol“.
Tipp aus der Praxis
Auf wenig besuchten WordPress-Websites kann WP-Cron unzuverlässig werden, weil Aufgaben nur bei Seitenaufrufen ausgelöst werden. Die Lösung ist, WP-Cron zu deaktivieren und durch einen echten Server-Cron zu ersetzen. Fügen Sie dazu in der wp-config.php die folgende Zeile ein:
define( 'DISABLE_WP_CRON', true );
Richten Sie anschließend auf dem Server einen Cron-Job ein, der wp-cron.php einmal pro Minute aufruft:
*/1 * * * * curl -s https://ihre-domain.de/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Diese Konfiguration stellt sicher, dass geplante Aufgaben zuverlässig zum vorgesehenen Zeitpunkt ausgeführt werden, unabhängig davon, ob Ihre Website gerade von Besuchern aufgerufen wird. Auf vielen Managed-WordPress-Hosting-Paketen ist diese Konfiguration bereits standardmäßig vorgenommen.