Comment tester wp_cron?


28

C'est une sorte de question stupide ...

J'ai planifié une action à exécuter toutes les heures:

if(!wp_next_scheduled('my_hourly_events'))
  wp_schedule_event(time(), 'hourly', 'my_hourly_events');

add_action('my_hourly_events', 'the_function_to_run');

function the_function_to_run(){
   echo 'it works!'; 
}

Comment puis-je tester si cela fonctionne sans attendre une heure? :)

J'ai essayé d'ajouter wp_clear_scheduled_hook('my_hourly_events');avant ce code et d'ajouter wp_cron()après, mais je ne vois pas ma fonction fonctionner ...

modifier:

ok, j'ai ajouté un à l' trigger_error()intérieur de ma fonction, vérifié le journal des erreurs apache, et il est là :)

Alors maintenant, je suis encore plus confus:

  • Comment le wp-cron peut-il fonctionner en arrière-plan? car apparemment c'est ce qui se passe si je ne vois aucune sortie ...

  • cela ne semble pas fonctionner dans un contexte d'objet; Pourquoi?


ok j'ai découvert que wp-cron.php est en cours d'exécution avec wp_remote_post(). ça explique tout ...
— onetrickpony

Par «contexte d'objet», voulez-vous dire que votre rappel est comme array( &$this, 'my_method_name' )? Cela ne fonctionnera en effet pas car le nom de la fonction est stocké dans la base de données pour être exécuté ultérieurement. &$thisfait référence à un objet spécifique, pas à un nom de classe, et cet objet n'existera pas à la prochaine demande lors de l'exécution du travail cron. Une fonction de classe statique devrait fonctionner.
— Jan Fabry

oui, je devais rendre ma fonction statique. Je ne pensais pas que wp exécuterait à distance un script local comme "cron"
— onetrickpony

Réponses:


20

Mon plugin préféré pour cela est Core Control qui a un très bon module pour afficher ce qui se passe dans le cron - quels événements sont configurés, quand vont-ils se déclencher, etc.

Pour vous salir les mains, voyez le niveau _get_cron_array()qui renvoie les données stockées internes pour les événements cron (le niveau supérieur des clés sont des horodatages).


L'enregistreur d'accès HTTP enregistre-t-il toutes les demandes ou uniquement celles effectuées avec l'API HTTP de WP? C'est idéal pour trouver les requêtes que les plugins font et pourquoi votre page se charge lentement :)
— onetrickpony

@One Trick Pony n'est pas sûr, mais il serait logique de supposer qu'il s'agit uniquement de l'API
— Rarst
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.