Как отладить WordPress "Cron" wp_schedule_event

31 мар. 2011 г., 17:24:53
Просмотры: 51.4K
Голосов: 28

Как можно отладить проблемы с WordPress Cron? Я думаю, что он срабатывает, когда пользователи заходят на сайт, но ошибки не будут им показаны, так как задачи выполняются "асинхронно". Как можно отладить такие ошибки?

Я использую wp schedule event

1
Комментарии

Используйте плагин Advanced Cron Manager

Guest Guest
6 мар. 2017 г. 23:44:44
Все ответы на вопрос 4
6
36

Вы можете запустить WP cron вручную, вызвав: http://example.com/wp-cron.php?doing_wp_cron

Если вы не хотите, чтобы автоматический cron запускался во время отладки, добавьте это в ваш файл /wp-config.php:

define('DISABLE_WP_CRON', true);

Если вы находитесь в среде разработки и хотите выводить отладочную информацию, ручной вызов cron таким способом покажет вам вывод отладки.

Альтернативно вы можете использовать встроенную в PHP функцию error_log для записи сообщений в лог ошибок при отладке. Вам нужно будет использовать эту функцию вместе с настройками WP_DEBUG, как упомянул Rarst.

31 мар. 2011 г. 21:15:43
Комментарии

Спасибо за подсказку с параметром ?doing_cron.

Roman Roman
31 мар. 2011 г. 22:11:30

Думаю, должно быть ?doing_wp_cron вместо ?doing_cron.

liviucmg liviucmg
23 апр. 2015 г. 13:14:17

@liviucmg Да, ты прав. Я внес изменение.

Simon East Simon East
4 авг. 2015 г. 08:14:35

Обязателен ли параметр ?doing_wp_cron? Смотрите руководство по ручной настройке EasyCron.

Alec Rust Alec Rust
3 сент. 2016 г. 14:25:11

@gabrielk Обязателен ли параметр ?doing_cron? Что он означает?

jedi jedi
23 февр. 2017 г. 11:31:05

Как протестировать конкретное задание? wp-cron.php?doing_wp_cron={hook} у меня не работает.

ahinkle ahinkle
10 авг. 2022 г. 16:18:53
Показать остальные 1 комментариев
1
10

Вы можете выполнить отладку вручную, создав действие и запустив внутри него Cron-задачу. Вот пример:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

После этого перейдите по адресу вашего сайта: http://example.com?the_cron_test

Это покажет вам все ошибки, связанные с Cron-задачей.

Но выполнять это вручную не имеет особого смысла. Вы можете использовать плагин Advanced Cron Manager PRO, который сделает это за вас, а также сохранит логи и другую статистику.

24 июл. 2017 г. 16:28:14
Комментарии

Это лучший метод, так как описанные выше (и ниже) способы не выводят никаких результатов.

Ciprian Ciprian
15 сент. 2021 г. 15:29:31
0

Вы можете использовать плагин Cron-View. С его помощью вы сможете увидеть: а) зарегистрировано ли ваше задание и б) когда оно должно выполниться в следующий раз.

Кроме того, вы можете добавить более короткий интервал для вашего события (например, каждые 2 минуты) и тестировать ваш метод чаще на локальной системе. Используйте хук фильтра 'cron_schedules' для регистрации новых интервалов. Например:

function my_additional_schedules($schedules) {
    // интервал в секундах
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Каждые две минуты');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');
31 мар. 2011 г. 18:22:34
0

Вы можете (и, вероятно, стоит это сделать в любом случае, с cron или без) настроить журнал ошибок PHP для фиксации всех ошибок.

31 мар. 2011 г. 18:10:30