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?

onetrickpony
la source
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).

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