Wie teste ich wp_cron?


28

Das ist eine dumme Frage ...

Ich habe eine Aktion geplant, die stündlich ausgeführt wird:

if(!wp_next_scheduled('my_hourly_events'))
  wp_schedule_event(time(), 'hourly', 'my_hourly_events');

add_action('my_hourly_events', 'the_function_to_run');

function the_function_to_run(){
   echo 'it works!'; 
}

Wie kann ich testen, ob dies funktioniert, ohne eine Stunde zu warten? :)

Ich habe versucht, wp_clear_scheduled_hook('my_hourly_events');vor diesem Code und wp_cron()nach diesem Code einzufügen , aber meine Funktion wird nicht ausgeführt ...

bearbeiten:

ok, ich habe ein trigger_error()inside meiner Funktion hinzugefügt , das Apache-Fehlerprotokoll ausgecheckt und es ist da :)

Jetzt bin ich noch verwirrter:

  • Wie kann der wp-cron im Hintergrund laufen? denn anscheinend passiert das, wenn ich keine Ausgabe sehe ...

  • Dies scheint in einem Objektkontext nicht zu funktionieren. Warum?


ok ich habe herausgefunden, dass die wp-cron.php mit ausgeführt wird wp_remote_post(). das erklärt alles ...
— onetrickpony

Meinen Sie mit "Objektkontext", dass Ihr Rückruf so ist array( &$this, 'my_method_name' )? Das wird in der Tat nicht funktionieren, da der Funktionsname in der Datenbank gespeichert ist, um später ausgeführt zu werden. &$thisverweist auf ein bestimmtes Objekt, nicht auf einen Klassennamen, und dieses Objekt ist bei der nächsten Anforderung nicht vorhanden, wenn der Cron-Job ausgeführt wird. Eine statische Klassenfunktion sollte funktionieren.
— Jan Fabry

Ja, ich musste meine Funktion statisch machen. Ich hätte nicht gedacht, dass wp aus der Ferne ein lokales Skript als "cron"
— onetrickpony am

Antworten:


20

Mein Lieblings-Plugin dafür ist Core Control, das ein sehr nettes Modul zur Anzeige dessen hat, was im Cron vor sich geht - welche Ereignisse werden eingerichtet, wann werden sie das nächste Mal ausgelöst usw.

Wenn Sie sich die Hände schmutzig machen, sehen Sie _get_cron_array(), welche internen Daten für Cron-Ereignisse zurückgegeben werden (oberste Schlüsselebene sind Zeitstempel).


Protokolliert der HTTP Access Logger alle Anfragen oder nur die mit der HTTP-API von WP gemachten? Dies ist großartig für die Suche nach Plugins und warum Ihre Seite langsam
— geladen wird

@One Trick Pony nicht sicher, aber es wäre sinnvoll anzunehmen, es ist nur API
— Rarst
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.