Cómo depurar el "Cron" wp_schedule_event de WordPress

31 mar 2011, 17:24:53
Vistas: 51.4K
Votos: 28

¿Cómo puedo depurar problemas con el Cron de WordPress? Creo que se activará cuando los usuarios visiten tu sitio, pero cualquier error no se les mostrará, ya que las tareas se ejecutan de forma "asíncrona". Entonces, ¿cómo podría depurar los errores?

Yo uso wp schedule event

1
Comentarios

Usa el plugin Advanced Cron Manager

Guest Guest
6 mar 2017 23:44:44
Todas las respuestas a la pregunta 4
6
36

Puedes ejecutar WP cron manualmente llamando a: http://ejemplo.com/wp-cron.php?doing_wp_cron

Si no quieres que el cron automático se ejecute mientras estás depurando, entonces añade esto a tu archivo /wp-config.php:

define('DISABLE_WP_CRON', true);

Si estás en un entorno de desarrollo y quieres mostrar información de depuración, llamándolo manualmente así te mostrará tu salida de depuración.

Alternativamente puedes usar la función error_log incorporada de PHP para registrar mensajes de texto en el registro de errores para depuración. Necesitarás usar esto en conjunto con los ajustes de WP_DEBUG, como menciona Rarst.

31 mar 2011 21:15:43
Comentarios

Gracias por el consejo con el parámetro ?doing_cron.

Roman Roman
31 mar 2011 22:11:30

Creo que debería ser ?doing_wp_cron en lugar de ?doing_cron.

liviucmg liviucmg
23 abr 2015 13:14:17

@liviucmg Sí, tienes razón. He hecho el ajuste.

Simon East Simon East
4 ago 2015 08:14:35

¿Es necesario el parámetro ?doing_wp_cron? Consulta el tutorial de configuración manual de EasyCron.

Alec Rust Alec Rust
3 sept 2016 14:25:11

@gabrielk ¿Es necesario el parámetro ?doing_cron? ¿Qué significa?

jedi jedi
23 feb 2017 11:31:05

¿Cómo se prueba un trabajo específico? wp-cron.php?doing_wp_cron={hook} parece no funcionar para mí.

ahinkle ahinkle
10 ago 2022 16:18:53
Mostrar los 1 comentarios restantes
1
10

Podrías depurar manualmente, creando una acción y ejecutando la acción Cron dentro. Así:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

Y accediendo a la dirección de tu sitio web: http://example.com?the_cron_test

Esto debería mostrarte cualquier error relacionado con la tarea cron.

Pero no tiene sentido hacerlo manualmente. Podrías usar el plugin Advanced Cron Manager PRO que hace esto por ti y además guarda el registro y otras estadísticas.

24 jul 2017 16:28:14
Comentarios

Este es el mejor método, ya que los mencionados anteriormente (y los siguientes) no muestran ninguna salida.

Ciprian Ciprian
15 sept 2021 15:29:31
0

Podrías usar el plugin Cron-View. Allí podrás ver si tu tarea está a) registrada y b) cuál es el próximo tiempo de ejecución.

Además, podrías agregar un temporizador de programación más corto a tu evento (por ejemplo, cada 2 minutos) y probar tu método con más frecuencia en un sistema local. Usa el hook de filtro 'cron_schedules' para registrar nuevos intervalos de tiempo. Por ejemplo:

function my_additional_schedules($schedules) {
    // intervalo en segundos
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Cada dos minutos');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');
31 mar 2011 18:22:34
0

Puedes (y probablemente deberías en cualquier caso, con cron o sin él) configurar el registro de errores de PHP para capturar todos los errores.

31 mar 2011 18:10:30