Jak debugować WordPress „Cron” wp_schedule_event


22

Jak mogę debugować problemy z WordPress Cron? Myślę, że uruchomi się, gdy użytkownicy przejdą do Twojej witryny, ale nie zostaną im wyświetlone żadne błędy, ponieważ zadania są uruchamiane „asynchronicznie”. Jak więc mogę debugować błędy?

używam wp schedule event


1
Przeczytaj tę dokumentację: developer.wordpress.org/plugins/cron/…
Nanhe Kumar

Użyj wtyczki Advanced Cron Manager
Guest

Odpowiedzi:


27

Możesz uruchomić WP cron ręcznie, dzwoniąc: http://example.com/wp-cron.php?doing_wp_cron

Jeśli nie chcesz, aby automatyczny cron działał podczas debugowania, dodaj go do swojego /wp-config.phppliku:

define('DISABLE_WP_CRON', true);

Jeśli pracujesz w środowisku programistycznym i chcesz wyprowadzić informacje debugowania, wywołanie ich w taki sposób spowoduje wyświetlenie wyników debugowania.

Alternatywnie można użyć wbudowanej funkcji PHP error_log do rejestrowania ciągów komunikatów w dzienniku błędów w celu debugowania. Musisz użyć tego w połączeniu z ustawieniami WP_DEBUG , jak wspomniał Rarst.


Dziękujemy za podpowiedź dotyczącą ?doing_cronparametru.
rofflox

3
Uważam, że powinno być ?doing_wp_cronzamiast ?doing_cron.
liviucmg

@liviucmg Tak, masz rację. Poprawiłem.
Simon East

1
Czy ?doing_wp_cronparametr jest wymagany? Zobacz samouczek konfiguracji ręcznej EasyCron .
AlecRust

@ gabrielk Czy wymagany jest parametr? doing_cron? co to znaczy?
jedi

6

Możesz użyć wtyczki Cron-View . Tam możesz sprawdzić, czy Twoje zadanie jest a) zarejestrowane i b) jaki jest następny termin.

Ponadto można dodać do wydarzenia mniejszy harmonogram (np. Co 2 minuty) i częściej testować metodę w systemie lokalnym. Użyj haka filtru „cron_schedules”, aby zarejestrować nowe czasy harmonogramu. Na przykład:

function my_additional_schedules($schedules) {
    // interval in seconds
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Every two minutes');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');


3

Możesz debugować ręcznie, tworząc akcję i wykonując w niej akcję Crona. Lubię to:

add_action( 'init', function() {

    if ( ! isset( $_GET['the_cron_test'] ) ) {
        return;
    }

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

I idąc na adres swojej witryny: http://example.com?the_cron_test

Powinno to pokazać błędy w zadaniu cron.

Ale nie ma sensu robić tego ręcznie. Możesz użyć wtyczki Advanced Cron Manager PRO, która robi to za Ciebie, a także zapisuje dziennik i inne statystyki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.