Как отлаживать WordPress «Cron» wp_schedule_event

22

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

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

Jiew Meng
источник
1
Прочитайте эту документацию: developer.wordpress.org/plugins/cron/…
Наньхэ Кумар
Использовать плагин Advanced Cron Manager
Гость

Ответы:

27

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

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

define('DISABLE_WP_CRON', true);

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

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

gabrielk
источник
Спасибо за подсказку с ?doing_cron параметром.
rofflox
3
Я считаю, что это должно быть ?doing_wp_cronвместо ?doing_cron.
liviucmg
@liviucmg Да, ты прав. Я сделал твик.
Саймон Ист
1
?doing_wp_cronТребуется ли параметр? См . Руководство по установке EasyCron .
AlecRust
@gabrielk Требуется ли параметр? working_cron? что это означает?
джедай
6

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

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

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');
rofflox
источник
3

Вы можете отлаживать вручную, создав действие и выполнив действие 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, который сделает это за вас, а также сохранит журнал и другую статистику.

WPMaster
источник