web-dev-qa-db-fra.com

Est-ce que wp-cron exécute toutes les tâches planifiées au même moment ou l'une après l'autre?

Je développe un plugin et je souhaite ajouter une tâche cron (disons cron_task_test), mais j'ai un doute. Dans le cas où 15 tâches (celles-ci peuvent être programmées par plusieurs plugins ou par l'utilisateur lui-même) sont planifiées pour être exécutées à la fois avec ma tâche (cron_task_test), wp-cron les sélectionnera une par une, c'est-à-dire une autre tâche après la première exécution ou si la première tâche a pris plus d'une minute? Ou est-ce que tous seront renvoyés les uns après les autres

En bref, comment fonctionne cron_lock? Dans le cas où il s’exécute l’un après l’autre, le thread cron principal qui exécute toutes les tâches une par une ne dépasse-t-il pas le délai maximal d’exécution du serveur (généralement 30 secondes)?

Que se passera-t-il si une autre tâche périodique avant ma tâche (cron_task_test) a généré une erreur ou dépassé la limite de temps?

2
learning_13

Par exemple, vers midi, il devrait exécuter 3 tâches.

Si vous utilisez wp-cron, il commencera quand quelqu'un visitera votre page vers 12h00. (Voici une petite complication car lorsque deux utilisateurs visitent votre page exactement au même moment, cron peut commencer deux fois et tout faire deux fois).

Cependant, quelqu'un ouvre notre page vers 12h00 et cron commence. Il tire tous les événements programmés dans la matrice. Définissez transitoire que cron est occupé et démarrez tous les processus dans l'instruction foreach en utilisant call_user_func_array (il est presque identique à do_action mais pour array).

Procédure dans foreach:

  • replanifier si nécessaire;
  • non planifié avant le début du travail;
  • call_user_func_array (faire le travail);
  • check cron lock car si le hook durait trop longtemps et qu'un autre processus cron volait le verrou, cron quitte la boucle;

Mes petits conseils:

  • crontab peut être une meilleure solution;
  • n'oubliez pas de vous connecter pour tester votre tâche périodique;
  • si l'un des emplois de cron échoue, cela n'a aucun impact sur les autres tâches (si je me trompe, corrigez-moi);

Vous avez quelques informations supplémentaires écrites dans l'article de mon ami: Cron solutions for wordpress

1
Sebastian Kurzynowski