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?

ein Trickpony
quelle
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).

Rarst
quelle
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