Wp-cron est un travail de cron interne WordPress. Il vous permet de planifier et exécuter automatiquement des tâches en arrière-plan. Il se veut ainsi complémentaire du système cron traditionnel du serveur.
La fiabilité de wp-cron est toutefois un peu discutable. Son exécution peut manquer de régularité, et s’il n’est pas bien gérer, il peut s’avérer s’avérer plus problématique qu’utile.
Cette réalité soulève donc quelques questions. Devriez-vous compter sur wp-cron? Devriez-vous le désactiver ou y a-t-il une meilleure façon de faire les choses ? C’est justement à quoi nous tenterons de répondre dans cet article.
Qu’est-ce que wp-cron ?
Les ordinateurs et les logiciels doivent effectuer certaines tâches automatiquement à certains moments planifiés. Wp-cron a donc été développé par WordPress pour effectuer certaines tâches automatisées à des moment prédéterminés.
Les développeurs qui créent des plugins et des thèmes peuvent se connecter à wp-cron pour que leur plugin ou thème effectue une tâche donnée à un moment donné. Le système est donc utilisé par de très nombreux outils, notamment pour des mises à jour automatiques.
Comment wp-cron diffère-t-il des tâches cron conventionnelles?
Wp-cron dans WordPress est un système pseudo-cron ou semi-cron, tandis que le système cron normal est un véritable planificateur de système d’exploitation.
La principale différence se situe au niveau de ce qui déclenche réellement l’exécution des tâches. Cette différence est dû à la nature même du CMS et à son fonctionnement de base.
Un système semi-cron
Wp-cron, comme tout PHP, ne fonctionne pas de manière continue en arrière-plan. Au lieu de cela, c’est seulement quand quelqu’un charge une page sur votre site qu’il vérifie si des tâches planifiées sont dues. Il exécute ensuite tout ce qui est en file d’attente à ce moment-là.
Si votre site ne reçoit aucun trafic pendant un moment, le système peut donc ne pas fonctionner du tout. Et quand vous obtenez un pic de trafic, il peut, au contraire, être exécuté plusieurs fois en parallèle. Cette dynamique peut parfois entraîner des retards ou des chevauchements.
Un cron normal, comme celui du système Linux, fonctionne indépendamment du trafic web. Il est plutôt contrôlé directement par le système d’exploitation du serveur. Il exécute donc des commandes à des heures précises, peu importe si quelqu’un visite le site. Cela le rend beaucoup plus fiable pour les tâches urgentes ou essentielles.
Vous avez donc wp-cron, d’un coté, qui dépend de l’accès à votre site. De l’autre, vous avez le système cron côté serveur, qui s’exécute indépendamment de l’accès à votre site.
Le problème avec wp-cron.
Si personne n’accède à votre site, wp-cron ne s’exécute pas. Cela signifie que les tâches restent accrochées au planificateur d’actions et qu’elles ne s’exécutent pas quand il le faut.
Cela peut alors entraîner l’accumulation de tâches au fil du temps. Ce n’est qu’au moment où quelqu’un accède à votre site que wp-cron s’exécute. Les tâches en attentes et le planificateur d’actions sont alors exécutées.
WordPress a amélioré l’exécution de wp-cron au fil des ans, mais le problème persiste. Si votre site n’a pas été consulté pendant un certain temps, il fait beaucoup plus que simplement charger le contenu quand un visiteur y accède enfin. Il effectue aussi toutes les tâches basées sur wp-cron. Cela peut alors entraîner d’importants retards dans le temps de chargement des pages.
Le principal problème avec wp-cron est donc qu’il pourrait ne pas fonctionner pendant un certain temps, et que lorsque votre site web est finalement sollicité, son exécution peut ralentir votre site en surchargeant votre serveur.
Pourquoi le problème existe-t-il ?
Par défaut, PHP ne peut pas interagir directement avec le système cron sous-jacent du serveur. WordPress fonctionne sous PHP, et ne peut donc pas demander au système d’exploitation d’exécuter une tâche à un moment précis de la même manière qu’un démon cron natif.
WordPress implémente donc son propre système de planification appelé wp-cron comme solution de contournement. Wp-cron simule efficacement les tâches planifiées. Pour ce faire, il vérifie si des tâches doivent être exécutées lorsqu’une page est demandée.
Si quelque chose est dû, il l’exécute à ce moment-là. Cela en fait une alternative partielle à une vrai tâche cron, mais qui demeure dépendante de l’accès à votre site. Cette limite est dûe au fait que PHP n’est pas exécuté de manière persistante.
Le compromis est donc que wp-cron n’est pas vraiment basé sur le temps ni garanti de fonctionner précisément à l’heure prévue. Il dépend toujours du trafic du site pour déclencher son exécution.
Devriez-vous simplement désactiver wp-cron ?
Désactiver wp-cron seul n’est toutefois pas une bonne idée. Faire cela reviendrait à annuler toutes les tâches qui devraient s’exécuter au fil du temps. Ces tâches ont un but et remplissent des fonctions clés. Si vous désactivez simplement le système, leurs objectifs ne seront pas atteints.
Ce système pseudo-cron de WordPress existe pour une raison. Les développeurs de plugins, de thèmes et WordPress l’utilisent, Le désactiver arrête alors tout ce pour quoi il a été utilisé. Vous ne devriez donc pas simplement le désactiver.
Comment gérer wp-cron.
La méthode conseillée pour le désactiver est de le faire via le fichier wp-config.php de votre site web. Vous devez ensuite configurer les tâches dans votre hébergement, afin d’appeler wp-cron à des moments précis.
Comment désactiver wp-cron dans le fichier wp-config.php de WordPress.
Pour désactiver wp-cron, vous devrez accéder au Gestionnaire de fichiers via le panneau de contrôle cPanel de votre hébergement. Vous pourrez ensuite ouvrir et modifier le fichier wp-config.php de votre site.
Le fichier wp-config.php se trouve dans la racine du document de votre site web. Celui se nomme généralement public_html, si vous utilisez cPanel avec une configuration de site unique.
Accédez à public_html, puis faites un clic droit sur wp-config.php. Sélectionnez ensuite l’option Modifier.
Faites défiler le texte jusqu’à ce que vous voyiez l’extrait suivant:
/* That's all, stop editing! Happy blogging. */
Juste au-dessus de cette ligne, ajoutez les commandes qui suivent :
/* Disable WP_CRON */
define('DISABLE_WP_CRON', true);
Enregistrez ensuite les modifications pour que la nouvelle configuration de votre site s’applique. WordPress désactive alors le système au niveau de sa configuration de base.
Assurez-vous de rétablir vos tâches Cron essentielles
Il vous faut maintenant configurer les événements et tâches chronométrés dans votre système cron, afin qu’ils continuent de s’exécuter et de fonctionner.
Vous pouvez alors utiliser l’outil Tâches Cron de cPanel pour configurer les tâches que vous venez d’annuler. Il suffit d’appeler le système semi-cron de WordPress à des moments précis pour il effectue les tâches aux moments que vous souhaitez.
Pour conclure sur wp-cron et comment le désactiver
La gestion des tâches cron peut sembler complexe pour des développeurs novices. Utiliser le système de WordPress n’est toutefois pas la meilleure solution, même si elle peut sembler simple.
Si le trafic de votre site est irrégulier, ce système peut devenir très problématique. De longues listes de tâches en attente peuvent s’accumuler durant les périodes d’accalmie. Elles peuvent ensuite se déclencher en série au moment où le nombre de visiteurs augmente, ralentissant votre site. Il est donc préférable d’utiliser le système cron conventionnel de cPanel.
Nous espérons que cet article vous a plu et vous a éclairé sur wp-cron. Si c’est le cas, nous vous invitons à consulter nos autres articles et tutoriels.
Notre base de connaissance contient aussi sans doute des réponses à toutes vos questions en liens avec vos projets web