Como depurar o WordPress “Cron” wp_schedule_event

22

Como depurar problemas com o WordPress Cron? Eu acho que isso será acionado quando os usuários acessarem seu site, mas nenhum erro será mostrado a eles, pois os trabalhos são executados "de forma assíncrona". Então, como posso depurar erros?

eu uso wp schedule event

Jiew Meng
fonte
1
Leia esta documentação: developer.wordpress.org/plugins/cron/…
Nanhe Kumar
Use o plug
Guest

Respostas:

27

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

Se você não deseja que o cron automático seja executado durante a depuração, adicione-o ao seu /wp-config.phparquivo:

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á sua saída de depuração.

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

gabrielk
fonte
Obrigado pela dica com o ?doing_cronparâmetro
Rofflox 31/03
3
Eu acredito que deveria ser em ?doing_wp_cronvez de ?doing_cron.
liviucmg
@liviucmg Sim, você está certo. Eu fiz o ajuste.
Simon East
1
O ?doing_wp_cronparâmetro é obrigatório? Consulte o manual de configuração do EasyCron .
AlecRust 3/09/16
@gabrielk O parâmetro? doing_cron é necessário? O que isso significa?
jedi
6

Você pode usar o plugin Cron-View . Lá você pode ver se o seu trabalho é a) registrado eb) qual é o próximo prazo de vencimento.

Além disso, você pode adicionar um cronômetro menor ao seu evento (por exemplo, a cada 2 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');
rofflox
fonte
3

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

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 erros na tarefa cron.

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

WPMaster
fonte