Also bin ich heute Morgen auf ein Problem auf einer Website gestoßen, die WP Cron verwendet. Der Code sieht so aus:
//Schedule the cron to run if not scheduled
if ( ! wp_next_scheduled( 'my_check_cron_event' ) ) {
wp_schedule_event( strtotime('tomorrow America/New_York') , 'daily', 'my_check_cron_event' );
}
Das Problem ist ziemlich einfach. Dieser Code funktioniert gut, im Wesentlichen möchte ich die Funktion jeden Tag um Mitternacht Ortszeit ausführen. Wenn ich also die Funktion zum ersten Mal ausführe, erhält sie den Zeitstempel für morgen Mitternacht – Ortszeit. Und seitdem läuft die functino.
Jetzt an diesem Wochenende – wegen der Sommerzeit wird die Funktion eigentlich nie neu geplant – sie ist nur so eingestellt, dass sie alle 24 Stunden ausgeführt wird. Die Funktion begann also um 23 Uhr. Das ist natürlich leicht zu beheben – geht aber wieder kaputt. Ich finde keine wirklich guten Beiträge zu dem Thema – wie würdet ihr damit umgehen:
wp_schedule_event wird täglich ausgeführt, wenn sich die Sommerzeit ändert?
Nur um hier offensichtlichen Antworten vorzubeugen: Ich kann keinen richtigen Cron ausführen – es muss über wp erfolgen. Unser Host unterstützt es einfach nicht, es ist scheiße – aber das ist der Client. Jeder Rat wäre sehr dankbar!
Sie müssen also Veranstaltungen danach planen, wie lange Tageslicht vorhanden ist?
– Bas van Dijk
5. November 2018 um 16:42 Uhr
Haben Sie UTC mit New Yorker Zeitzone in den WordPress-Einstellungen konfiguriert (ich denke, das selbst wird funktionieren)?, WP Cron funktioniert nur, wenn der Benutzer es besucht. Wenn während der festgelegten Zeit keine Besuche erfolgen, wird es nicht ausgeführt, und wenn ein Benutzer nach der Zeit zu Besuch kommt, wird es sofort ausgelöst und die nächste geplante Zeit festgelegt, sodass Sie kein Ergebnis wie Server-Cron erwarten, hoffen Sie, dass Sie sich dessen bereits bewusst sind?
– Vignesh Pichamani
5. November 2018 um 18:43 Uhr
Ich muss es nicht basierend auf dem Tageslicht planen, ich muss es unabhängig vom Tageslicht um Mitternacht Ortszeit ausführen. Die Zeitzone ist richtig konfiguriert – Und ich habe ein Ping-Setup, um den Server zur richtigen Zeit zu treffen, um diesen Cron auszuführen, ich verstehe das alles. Das Problem ist, dass der Cron SELBST alle 24 Stunden ausgeführt werden soll – ab dem Zeitpunkt, an dem er zum ersten Mal festgelegt wird. Dieser 24-Stunden-Countdown muss sich ändern, wenn sich die Zeitzone ändert, um um Mitternacht weiterzulaufen.
– JBoss
4. Februar 2019 um 15:49 Uhr