Comment déboguer WordPress «Cron» wp_schedule_event

22

Comment puis-je déboguer des problèmes avec WordPress Cron? Je pense que cela se déclenchera lorsque les utilisateurs visiteront votre site, mais aucune erreur ne leur sera montrée, car les travaux sont exécutés "de manière asynchrone". Alors, comment pourrais-je déboguer des erreurs?

j'utilise wp schedule event

Jiew Meng
la source
1
Lire cette documentation: developer.wordpress.org/plugins/cron/…
Nanhe Kumar
Utiliser le plugin Advanced Cron Manager
Guest

Réponses:

27

Vous pouvez exécuter WP cron manuellement en appelant: http://example.com/wp-cron.php?doing_wp_cron

Si vous ne souhaitez pas que le cron automatique s'exécute pendant le débogage, ajoutez-le à votre /wp-config.phpfichier:

define('DISABLE_WP_CRON', true);

Si vous êtes dans un environnement de développement et que vous souhaitez générer des informations de débogage, l'appeler manuellement comme cela vous montrera votre sortie de débogage.

Vous pouvez également utiliser la fonction intégrée error_log de PHP pour enregistrer les chaînes de messages dans le journal des erreurs pour le débogage. Vous devez l'utiliser en conjonction avec les paramètres WP_DEBUG , comme mentionné par Rarst.

Gabrielk
la source
Merci pour l'astuce avec le ?doing_cronparamètre.
rofflox
3
Je crois qu'il devrait être au ?doing_wp_cronlieu de ?doing_cron.
liviucmg
@liviucmg Oui, vous avez raison. J'ai fait le tweak.
Simon East
1
Le ?doing_wp_cronparamètre est-il requis? Voir le tutoriel de configuration manuelle d'EasyCron .
AlecRust
@gabrielk Le paramètre? doing_cron est-il requis? Qu'est-ce que ça veut dire?
jedi
6

Vous pouvez utiliser le plugin Cron-View . Là, vous pouvez voir si votre travail est a) enregistré et b) quelle est la prochaine échéance.

De plus, vous pouvez ajouter un temporisateur inférieur à votre événement (par exemple toutes les 2 minutes) et tester votre méthode plus fréquemment sur un système local. Utilisez le crochet de filtre «cron_schedules» pour enregistrer de nouveaux horaires. Par exemple:

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
la source
3

Vous pouvez déboguer manuellement, en créant une action et en exécutant l'action Cron à l'intérieur. Comme ça:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

Et en allant à l'adresse de votre site Web: http://example.com?the_cron_test

Cela devrait vous montrer toutes les erreurs avec la tâche cron.

Mais cela n'a aucun sens de le faire manuellement. Vous pouvez utiliser le plugin Advanced Cron Manager PRO qui le fait pour vous et enregistre également le journal et d'autres statistiques.

WPMaster
la source