WP Schedule Event – Jeden Tag, wenn der erste Besucher kommt

Ich habe einen täglichen wp-Terminplan.

Ich weiß, dass es passiert, wenn ein Benutzer die Site besucht und wenn ein Zeitplan verstreicht.

Wenn ich heute morgen um 12 Uhr anfange und wenn morgen der erste Besucher morgen kommt, 1:20 Uhr passiert das morgen morgen 1:20 Uhr.

Tag für Tag passiert es nach 1.20 oder nach 12.00 Uhr?

Solutions Collecting From Web of "WP Schedule Event – Jeden Tag, wenn der erste Besucher kommt"

wp-cron wird oft als Pseudocron bezeichnet, da es nicht nach einem strengen Zeitplan läuft. Wenn niemand die Site besucht, wird sie nicht ausgeführt. Wenn Sie planen, dass ein wp-cron-Ereignis beispielsweise alle 12 Stunden ausgeführt wird, wird es maximal alle 12 Stunden ausgeführt. Wenn Ihre Website jedoch nur wenig Verkehr hat, können zwischen den Läufen mehr als 12 Stunden vergehen.

Wenn Sie eine Veranstaltung alle 12 Stunden oder jeden Tag zur gleichen Zeit benötigen, müssen Sie etwas außerhalb von WordPress verwenden. Zu den gängigen Ansätzen gehört die Verwendung des System-Task-Schedulers (unter Linux wird dies üblicherweise “Cron” genannt) oder eines Drittanbieter-Dienstes wie EasyCron.

Angenommen, Sie befinden sich auf einem Linux-Server (bei weitem die am häufigsten verwendete Hosting-Umgebung), erstellen Sie ein kleines Shell-Skript, das wie folgt aussieht:

#!/bin/bash curl http://yoursite.name.com/wp-cron.php >/dev/null 

Dadurch wird der Befehl “curl” ausgeführt, um die Seite wp-cron.php Ihrer Site zu laden und die Ergebnisse sofort zu ignorieren (indem die Ausgabe an / dev / null abgelegt wird). Sie interessieren sich nicht für irgendeine Ausgabe, die die Seite haben könnte, und tatsächlich gibt es normalerweise keine Ausgabe. Sie möchten nur sicher sein, dass die Seite geladen ist.

Dann füge eine Zeile zu deiner crontab hinzu (“crontab -e” öffnet die Crontab-Datei in deinem Standard-Editor, wahrscheinlich vi ), die ungefähr so ​​aussieht:

 0 0,12 * * * /home/user/touch-site.sh 

(Ändern Sie den Speicherort natürlich an der Stelle, an der Sie das Skript abgelegt haben. Stellen Sie außerdem sicher, dass das Skript ausführbar ist, indem Sie “chmod 700 touch-site.sh” ausführen.)

In diesem Beispiel wird Ihre Site täglich, mittags und Mitternacht (Serverzeit) aufgerufen und das Skript wp-cron ausgeführt. Weitere Informationen zur functionsweise dieser Datei finden Sie unter “man crontab”.

Um diese Anfrage zu beantworten

@sumit Bist du dir da sicher? Einer meiner Freunde sagte, wenn es heute um 1.20 Uhr am nächsten Tag passiert, passiert es nach 1.20 Uhr, nicht um 12.00 Uhr

Wie es funktioniert:

  1. Sie planen ein Ereignis mit dem aktuellen Zeitstempel, z. B. 12:00 Uhr am Montag

     wp_schedule_event(time(), 'daily', 'my_schedule_hook'); 
  2. Jemand hat die Website am Montag um 1.20 Uhr besucht.

WP nennt dieses Stück Code

  if ( $schedule != false ) { $new_args = array($timestamp, $schedule, $hook, $v['args']); call_user_func_array('wp_reschedule_event', $new_args); } wp_unschedule_event( $timestamp, $hook, $v['args'] ); /** * Fires scheduled events. * * @ignore * @since 2.1.0 * * @param string $hook Name of the hook that was scheduled to be fired. * @param array $args The arguments to be passed to the hook. */ do_action_ref_array( $hook, $v['args'] ); 

Hier ruft es die function wp_reschedule_event() , die den gleichen Zeitstempel verwendet, so dass der nächste Zeitplan Dienstag 12:00 AM NICHT 1:20 AM ist. Dann ruft es den Zeitplan-Aktions-Hook auf.

  1. Häufige Fehler, die Leute machen, ist, dass sie wp_schedule_event() direkt in functions.php aufrufen, damit WP das Ereignis bei jedem neuen Zeitstempel plant. Der richtige Weg ist zu prüfen, ob der Zeitplan nur dort ist, dann erstellen Sie ihn.

     $my_schedule_hook = wp_next_scheduled('my_schedule_hook'); if (!$my_schedule_hook) { wp_schedule_event(time(), 'daily', 'my_schedule_hook'); } 

Daher wird es nur zum ersten Mal in den if Block gehen, wenn es überhaupt keinen Zeitplan gibt. Immer noch können Sie alle Termine mit diesem Plugin WP Crontrol ansehen