NeuBlack Friday – 50 % Rabatt auf die erste Zahlung
WordPress-Fehlerbehebung

Geplante Beiträge zeigen "Missed Zeitplan"

Die Veröffentlichungszeit verging und nichts passierte. WP-Cron ist keine Uhr – sie läuft, wenn eine Anfrage eintrifft, und keine Anfrage eingetroffen ist.

Missed schedule

Kurzantwort

WP-Cron wird durch Seitenladungen ausgelöst, so dass eine ruhige Site nichts hat, um sie auszulösen. Listen Sie die fälligen Ereignisse auf: Wenn sie in der Vergangenheit mit einem Zeitstempel in die Warteschlange gestellt wurden, ist der Zeitplan in Ordnung und der Auslöser fehlt, und ein echter Systemcron behebt ihn dauerhaft.

Diagnose

Die wahrscheinlichsten Ursachen zuerst.

Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.

UrsacheSo prüfen Sie esLösung
Kein Traffic zur geplanten ZeitFällige Ereignisse häufen sich mit vergangenen Zeitstempeln und laufen dann alle sofort, wenn Sie eine Seite selbst laden.Fahren Sie cron vom Betriebssystem in einem festen Intervall anstelle von Besuchern, so dass die Warteschlange bearbeitet wird, ob jemand auf der Website ist oder nicht.
WP-Cron ist deaktiviert und nichts hat es ersetztDISABLE_WP_CRON ist wahr in wp-config.php, und keine geplante Aufgabe auf dem Server ruft wp-cron.php auf.Hinzufügen des System-Cron-Eintrags, den die Konstante annimmt. Deaktivieren des Besucherauslösers ohne Hinzufügen eines Ersatzes stoppt jede geplante Aufgabe auf der Website und nicht nur die Veröffentlichung.
Die Loopback-Anforderung ist fehlgeschlagenSite Health berichtet, dass die Site keine Loopback-Anfrage abschließen konnte. WP-Cron spawnt sich selbst über HTTP, so dass es nicht ausgeführt werden kann, wenn die Site sich nicht selbst erreichen kann.Beheben Sie zuerst den Loopback - er blockiert Cron, Plugin-Updates und das automatische Speichern des Editors. wp-cron.php durch die Befehlszeile aufzurufen, macht HTTP vollständig zu umgehen.
Die Zeitzone der Website ist nicht das, was Sie denkenPosts veröffentlichen, aber eine Stunde oder mehrere off. Vergleichen Sie die WordPress Timezone Einstellung mit der Server-Uhr.Stellen Sie die Zeitzone auf eine benannte Stadt statt auf einen UTC-Offset, so dass die Sommerzeit gespart wird. Ein Offset ist eine feste Zahl und geht zweimal im Jahr schief.
Anleitung

Schritt für Schritt zur Lösung.

Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.

  1. Sehen Sie, ob Ereignisse in der Warteschlange und überfällig sind

    Das ist die Trennung: Überfällige Ereignisse bedeuten, dass die Planung funktioniert hat und nichts in der Warteschlange steht.

    wp cron event list --fields=hook,next_run_relative,status
  2. Führen Sie die Warteschlange von Hand

    Wenn der Rückstand löscht, war der Zeitplan nie das Problem und Sie suchen nach einem Auslöser.

    wp cron event run --due-now
  3. Schalten Sie den besuchergesteuerten Trigger aus

    Fügen Sie dies zu wp-config.php hinzu. Allein macht es die Dinge noch schlimmer, also machen Sie den nächsten Schritt in derselben Sitzung.

    define( 'DISABLE_WP_CRON', true );
  4. Geben Sie ihm einen echten Zeitplan

    Alle fünf Minuten reichen für die Veröffentlichung und schonend auf einem kleinen Server. Verwenden Sie WP-CLI statt curl, so dass keine HTTP-Anfrage involviert ist.

    */5 * * * * cd /path/to/site && wp cron event run --due-now --quiet
  5. Bestätigen Sie die Zeitzone, bevor Sie Cron erneut beschuldigen

    Ein Post, der zuverlässig, aber zur falschen Stunde veröffentlicht, ist ein Uhrenproblem, kein Warteschlangenproblem.

    wp option get timezone_string
    date
Mit MagicWP

Darum kümmert sich die Plattform.

Cron wird von der Plattform in einem festen Intervall anstatt von Besuchern gesteuert, und der Besucherauslöser wird ausgeschaltet, so dass ein für 3 Uhr morgens geplanter Beitrag um 3 Uhr morgens auf einer Website ohne Nachtverkehr veröffentlicht wird. Da der Läufer die Plattform ist und keine HTTP-Anfrage, die die Website an sich selbst stellt, hört ein fehlgeschlagenes Loopback nicht stillschweigend auf zu veröffentlichen.

Häufige Fragen

Häufige Fragen.

Warum hat jeder verpasste Post sofort veröffentlicht, als ich die Website geöffnet habe?
Denn Ihr Besuch war der Auslöser. WP-Cron prüft auf fällige Ereignisse beim Seitenladen, fand einen Rückstand und arbeitete ihn durch — was die klarste Demonstration ist, dass der Zeitplan richtig war und nichts ihn abfeuerte.
Ist ein Plugin, das "verpasste Zeitpläne korrigiert" genug?
Es veröffentlicht Posts, die ausgerutscht sind, was nützlich ist, aber es wird immer noch von den gleichen Seitenlasten angetrieben, die sie verpasst haben. Auf einer ruhigen Seite hilft es nur, wenn jemand sie besucht.
Wie oft sollte das System cron laufen?
Alle fünf Minuten passen zum Veröffentlichen und die meisten Plugins funktionieren. Wenn man auf eine Minute heruntergeht, ändert sich selten etwas, was ein Leser bemerken würde, und multipliziert die Anzahl der PHP-Prozesse, die pro Stunde gestartet werden.
Beeinflusst das etwas anderes als Posts?
Ja — es ist die gleiche Schlange hinter Backups, Plugin-Update-Checks, dem Versenden von E-Mails in der Warteschlange und dem Löschen von Transienten. Eine Website ohne Cron-Trigger lässt all diese Dinge stillschweigend nicht passieren.