WordPress geplante Aufgabe wird aufgerufen, aber nicht ausgeführt

Ich habe ein Plugin mit einem Cron erstellt, um alle Beiträge eines bestimmten Typs alle 5 Minuten zu aktualisieren. Ich habe WP Crontrol installiert, um zu überprüfen, ob der Cron richtig registriert ist und alles in Ordnung zu sein scheint.

So habe ich meinen Cron registriert:

function custom_cron_interval( $schedules ) { $schedules['fiveminutes'] = array( 'interval' => 300, 'display' => __('Every five minutes') ); return $schedules; } add_filter( 'cron_schedules', 'custom_cron_interval' ); if ( ! wp_next_scheduled( 'recalculate_all_scores' ) ) { wp_schedule_event(time(), 'fiveminutes', 'recalculate_all_scores'); } 

Es ist korrekt registriert, aber wenn die function ausgeführt wird, passiert nichts. Zu Testzwecken habe ich die function an die Aktion save_post angehängt. Auf diese Weise funktioniert alles gut. Wenn die geplante Task jedoch aufgerufen wird, wird sie nicht ausgeführt.

Hier ist der Code der function

 function recalculate_all_scores() { global $wpdb; $customers = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_type = 'customer' AND post_status = 'publish';"); foreach ($customers as $customer){ set_score($customer); } } function set_score($customer){ $acf_key = "score"; $score = rand(0,50); update_field( $acf_key, $score, $customer->ID ); } 

Ich habe meiner wp-config.php folgende Zeilen hinzugefügt:

 define('ALTERNATE_WP_CRON', true); define('DISABLE_WP_CRON', false); 

Irgendeine Idee, was die Ausführung der function stoppt?

BEARBEITEN

  • Ich bin mir bewusst, dass das wp_cron-System kein echtes Cron ist und dass es auf Besuche vor Ort angewiesen ist.
  • Wenn ich die function manuell ausführe, dauert es ungefähr 15 Sekunden, so dass das PHP-Ausführungszeitlimit kein Problem sein sollte.

Solutions Collecting From Web of "WordPress geplante Aufgabe wird aufgerufen, aber nicht ausgeführt"

Ich hatte das gleiche Problem in letzter Zeit, bis ich einem Beispiel aus dem WordPress Codex folgte, der vorschlägt, Action-Hooks zu verwenden, um die function auszuführen.

Ich denke wenn du folgendes hinzufügst …

 add_action( 'recalculate_all_scores_hook', 'recalculate_all_scores' ); 

… und ändern Sie die function wp_schedule_event, um den Namen des Aktionshakens anstelle der function direkt zu verwenden …

 wp_schedule_event( time(), 'fiveminutes', 'recalculate_all_scores_hook' ); 

… Sie könnten im Geschäft sein.

Viel Glück!

WordPress unterstützt nur stündlich, täglich und twise täglich, also ändern Sie fünf Minuten mit einem von drei und stellen Sie Ihre function mit sleep(10); oder eine andere Zeit, die für Ihr Plugin geeignet ist

Überprüfen Sie hier