Como depurar o WordPress “Cron” wp_schedule_event

21

Como posso depurar problemas com o WordPress Cron? Acho que será acionado quando os usuários acessarem seu site, mas os erros não serão mostrados a eles, pois os trabalhos serão executados "de forma assíncrona". Então, como depurar erros?

Eu uso wp schedule event

    
por Jiew Meng 31.03.2011 / 16:24
fonte

4 respostas

27

Você pode executar o WP cron manualmente chamando: http://example.com/wp-cron.php?doing_wp_cron

Se você não quiser que o cron automático seja executado enquanto estiver depurando, adicione isso ao seu arquivo /wp-config.php :

define('DISABLE_WP_CRON', true);

Se você estiver em um ambiente de desenvolvimento e quiser gerar informações de depuração, chamá-lo manualmente assim mostrará a saída de depuração.

Como alternativa, você pode usar a função error_log do PHP para registrar as strings de mensagens no erro. log para depuração. Você precisaria usar isso em conjunto com as configurações do WP_DEBUG , conforme mencionado por Rarst.

    
por gabrielk 31.03.2011 / 20:15
fonte
6

Você pode usar o plug-in Cron-View . Lá você pode ver se o seu trabalho é a) registrado e b) qual é o próximo prazo.

Além disso, você pode adicionar um cronômetro de programação menor ao seu evento (por exemplo, a cada dois minutos) e testar seu método com mais frequência em um sistema local. Use o gancho de filtro 'cron_schedules' para registrar novos horários de agendamento. Por exemplo:

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');
    
por rofflox 31.03.2011 / 17:22
fonte
3

Você pode (e provavelmente deve, em qualquer caso, cron ou não) configurar o log de erros do PHP para capturar todos os erros.

    
por Rarst 31.03.2011 / 17:10
fonte
2

Você pode depurar manualmente, criando uma ação e executando a ação Cron dentro. Assim:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

E indo para o endereço do seu site: http://example.com?the_cron_test

Isso deve mostrar algum erro com a tarefa Cron.

Mas não faz sentido fazer isso manualmente. Você pode usar o plugin Advanced Cron Manager PRO que faz isso para você e também salva o log e outras estatísticas.

    
por WPMaster 24.07.2017 / 15:28
fonte

Tags