Jak przetestować wp_cron?

28

To głupie pytanie ...

Zaplanowałem uruchamianie akcji co godzinę:

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!'; 
}

Jak mogę sprawdzić, czy to działa bez czekania przez godzinę? :)

Próbowałem dodać wp_clear_scheduled_hook('my_hourly_events');przed tym kodem i dodać wp_cron()później, ale nie widzę, aby moja funkcja działała ...

edytować:

ok, dodałem funkcję trigger_error()wewnątrz, sprawdziłem dziennik błędów apache i już tam jest :)

Więc teraz jestem jeszcze bardziej zdezorientowany:

  • Jak wp-cron może działać w tle? ponieważ najwyraźniej tak się dzieje, jeśli nie widzę żadnych danych wyjściowych ...

  • to nie wydaje się działać w kontekście obiektowym; czemu?

onetrickpony
źródło
ok dowiedziałem się, że plik wp-cron.php jest wykonywany wp_remote_post(). to wyjaśnia wszystko ...
onetrickpony
Mówiąc „kontekst obiektowy”, masz na myśli swoje oddzwanianie array( &$this, 'my_method_name' )? To rzeczywiście nie zadziała, ponieważ nazwa funkcji jest przechowywana w bazie danych do późniejszego wykonania. &$thisodnosi się do konkretnego obiektu, a nie do nazwy klasy, i ten obiekt nie będzie istniał przy następnym żądaniu, gdy zadanie cron zostanie wykonane. Funkcja klasy statycznej powinna działać.
Jan Fabry,
tak, musiałem ustawić statyczną funkcję. Nie sądziłem, że wp zdalnie uruchomi lokalny skrypt jako „cron”
onetrickpony

Odpowiedzi:

20

Moim ulubionym pluginem jest Core Control, który ma bardzo ładny moduł do wyświetlania tego, co dzieje się w cronie - które zdarzenia są konfigurowane, kiedy będą uruchamiane itp.

Po zabrudzeniu rąk sprawdź _get_cron_array(), który zwraca wewnętrznie przechowywane dane dla zdarzeń cron (najwyższy poziom kluczy to znaczniki czasu).

Rarst
źródło
czy rejestrator dostępu HTTP rejestruje wszystkie żądania, czy tylko te wykonane za pomocą interfejsu API HTTP WP? To jest dobre dla znalezienia żądań pluginy sprawiają, dlaczego Twoja strona się ładuje powoli :)
onetrickpony
@One Trick Pony nie jestem pewien, ale warto założyć, że jest to tylko API
Rarst