0
votes

Pourquoi error_log n'est-il pas appelé pendant mon cron?

J'essaie de planifier qui s'exécute toutes les cinq minutes.

Le code ci-dessous planifie avec succès le cron, et il apparaît dans WP Crontrol, mais "Faire un cron!" n'apparaît jamais dans le journal des erreurs.

Qu'est-ce qui ne va pas?

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

function do_cron_stuff()
{
    error_log('Doing a cron!');
}

add_filter('cron_schedules', 'cron_stuff_add_5_minute_cron_interval');

function cron_stuff_add_5_minute_cron_interval($schedules)
{
    error_log("cron_stuff_add_5_minute_cron_interval called");

    $schedules['five_minutes'] =
    [
        'interval' => 300,
        'display'  => esc_html__('Every Five Minutes')
    ];

    return $schedules;
}

register_activation_hook(__FILE__, 'cron_stuff_plugin_activation');

function cron_stuff_plugin_activation()
{
    error_log("cron_stuff_plugin_activation called");

    if (wp_next_scheduled('do_cron_stuff_event') === false)
    {
        wp_schedule_event(time(), 'five_minutes', 'do_cron_stuff_event');
    }
}

register_deactivation_hook(__FILE__, 'cron_stuff_plugin_deactivation');

function cron_stuff_plugin_deactivation()
{
    error_log("cron_stuff_plugin_deactivation called");

    wp_clear_scheduled_hook('do_cron_stuff_event');
}


1 commentaires

voyez-vous cron_stuff_plugin_activation appelé appelé dans le journal?


3 Réponses :


1
votes

Je pense que le problème est que vous spécifiez 2 $ allowed_args pour

add_action('do_cron_stuff_event', 'do_cron_stuff', 10);

alors que do_cron_stuff n'en accepte aucun. p >

Remplacez-le par

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

et voyez si cela fonctionne.


1 commentaires

Merci, j'ai raté ça. Mon problème s'est avéré être quelque chose de différent, mais le nombre d'arguments devait également être corrigé.



0
votes

WP-Cron fonctionne comme suit: à chaque chargement de page, une liste de tâches planifiées est vérifiée pour voir ce qui doit être exécuté. Toutes les tâches planifiées pour être exécutées seront exécutées pendant le chargement de cette page. WP-Cron ne fonctionne pas constamment comme le fait le système cron; il n'est déclenché qu'au chargement de la page. Des erreurs de planification peuvent se produire si vous planifiez une tâche pour 14 h 00 et qu'aucun chargement de page ne se produit avant 17 h 00. https://developer.wordpress.org/plugins/cron/

Cela signifie que vous devez déclencher (query) /wp-cron.php de l'extérieur toutes les 5 minutes.


0 commentaires

0
votes

Il s'avère que error_log en fait a été appelé, mais comme il a été activé par un cron système, la sortie du journal des erreurs a été envoyée à un autre fichier journal des erreurs que l'habituel.

Pour résoudre ce problème, j'ai utilisé le troisième paramètre de la fonction error_log pour envoyer la sortie vers un fichier journal personnalisé.


0 commentaires