Aperçu de WP-Cron introduction aux tâches de planification dans WordPress

Aujourd'hui, nous allons examiner les fonctions WP-Cron, l'une des astuces les moins connues que vous pouvez utiliser pour vous amuser! L'objectif principal est de configurer la planification ou d'autres tâches urgentes. Nous examinerons quelques astuces pour l'utiliser, nous identifierons également certains problèmes potentiels et nous expliquerons comment les résoudre..

WordPress est un logiciel puissant. Cependant, sa simplicité peut souvent donner une mauvaise impression aux utilisateurs non techniques sur son fonctionnement interne. Cela aurait pu servir les intérêts de WordPress, dans la mesure où quelque chose qui semble simple et facile à utiliser est généralement adopté par les masses. Cependant, il est important de garder à l'esprit que, dans les coulisses, il existe un puissant logiciel capable de faire bien plus que de simples blogs..

WP-Cron est l’une des fonctionnalités moins connues de WordPress (consultez la page du codex sur WP-Cron ici). Maintenant, ceux d'entre vous qui ont traité avec le général Cron sur un serveur Linux connaître le pouvoir de cette fonction.

Qu'est-ce que Cron??

Cron est une commande UNIX permettant de planifier des tâches à exécuter ultérieurement.. UNE cron est normalement utilisé pour planifier un travail exécuté périodiquement. Par exemple, vous pouvez utiliser une fonction cron pour envoyer un avis tous les matins. C'est aussi un démon processus, ce qui signifie qu'il fonctionne en continu, en attente d'événements spécifiques.


La façon dont cela fonctionne

WordPress étant installé sur de nombreuses configurations différentes, les développeurs de WordPress ont implémenté un pseudo-cron qui inclut le Fonctions WP-Cron cela aide à exécuter des tâches de planification telles que:

  • Vérification des mises à jour de thèmes et de plugins
  • Publier des messages programmés
  • Envoi de pingback
  • et plus!

Contrairement aux tâches cron classiques, qui s'exécutent à une heure précise en fonction des paramètres du serveur, la fonction WP-Cron s'exécute chaque fois que quelqu'un visite le site Web propulsé par WordPress. Cela permet à un site WordPress de fonctionner correctement sur différents types de configurations de serveur, car cela élimine de nombreuses exigences spécifiques au serveur. À chaque chargement de page, WordPress vérifie s'il est nécessaire d'exécuter WP-Cron. S'il y a un besoin, alors il essaye de faire une demande par HTTP au wp-cron.php fichier.

La raison d'appeler wp-cron.php Cela est dû au fait que certaines tâches peuvent prendre plus de temps et que l'utilisateur qui demande la page WordPress ne peut pas attendre. L'appel de wp-cron.php permet de maintenir la fonction WP-Cron exécutée en tant que processus séparé en arrière-plan sans retarder le temps de chargement de la page pour l'utilisateur. Une fois que la fonction WP-Cron a démarré, elle continue de s'exécuter jusqu'à ce que tous les travaux requis soient terminés ou jusqu'à ce qu'elle atteigne le délai d'exécution défini dans la configuration du serveur..

En fonction de la configuration de votre hôte Web, WP-Cron peut ne pas terminer ses travaux ou ne pas fonctionner du tout. Les sites Web à fort trafic sont confrontés à un autre ensemble de problèmes, tels que plusieurs processus WP-Cron s'exécutant en boucle. La plupart du temps, les gens le reprochent à WordPress, mais ce n’est pas nécessairement un problème avec WordPress. Chaque situation est différente et, sur cette base, nous pouvons adapter WordPress pour qu'il fonctionne de la meilleure façon possible. Ci-dessous, vous trouverez quelques-uns des problèmes courants auxquels les gens sont confrontés et comment les résoudre..


Quelques problèmes avec WP-Cron

Problème: plusieurs processus en cours d'exécution WP-Cron sur des sites Web à fort trafic

Si vous êtes un administrateur de serveur ou si vous gérez votre propre serveur avec un pare-feu, vous avez peut-être reçu des courriels de votre pare-feu concernant un fichier "wp-cron.php" en cours d'exécution pendant une longue période. Cela se produit lorsque le temps d'exécution du script défini sur votre serveur est supérieur à 60 secondes. Comme le processus n'est pas terminé et que de nouveaux processus sont démarrés, plusieurs instances du processus WP-Cron s'exécutent sur le serveur..

Cela ne se produit pas sur un site Web à faible trafic, mais si votre site Web sous WordPress a des utilisateurs simultanés à un moment donné et que le temps d'exécution du script est défini sur élevé, de nombreuses instances de cette fonction WP-Cron seront exécutées. Jusqu'à une version récente de WordPress, il y avait toujours un problème de plusieurs processus cron en boucle sur les mêmes événements..

REMARQUE: WordPress 3.3 nous donne un meilleur verrouillage cron. Cet article a été rédigé au moment de la publication de WordPress 3.3, qui offre un meilleur verrouillage cron et évite la multiplication des processus WP-Cron en boucle sur les mêmes événements..

Problème: messages programmés manqués

Un autre problème largement signalé avec certains fournisseurs d’hébergement et certains sites Web à très faible trafic concerne les publications programmées qui ne sont pas publiées. Comme la fonction WP-Cron ne s'exécute qu'en cas de demande de page, s'il n'y a pas de demande, les travaux planifiés ne sont pas exécutés..

Remarque: Il n'y a pas de problème avec WordPress. De plus, depuis la version 3.x, cela a été rapporté beaucoup moins. Cependant, il existe de nombreux plugins pour résoudre ce problème..

Problème: WP-Cron ne fonctionne pas du tout

Encore une fois, c'est un problème avec la configuration du serveur. En raison de paramètres incorrects, les pare-feu empêchent les scripts de s’appeler eux-mêmes et la fonction WP-Cron ne fonctionne pas..


Solution possible à la plupart des problèmes de WP-Cron

Pour éviter que plusieurs instances de WP-Cron ne s'exécutent sur votre serveur pour un seul site Web, j'ai essayé d'utiliser la méthode par défaut de configuration des tâches cron sur un serveur Linux (Apache avec cPanel comme panneau de configuration). L'avantage de cette méthode est:

  • Plus de contrôle sur l'exécution de la fonction WP-Cron.
  • Évitez les boucles multiples.
  • Si vous possédez un serveur hébergeant de nombreux sites Web WordPress, cela peut réduire la charge du serveur..

Avant de commencer, assurez-vous que votre hôte Web vous permet de configurer les tâches cron Linux par défaut. La configuration de l'installation serait différente en fonction du panneau de configuration proposé par votre hôte, mais dans cet article, je vais vous aider à configurer une tâche cron à l'aide du panneau de configuration cPanel, couramment utilisé sur les serveurs Linux..

Les étapes que j'ai suivies étaient:

  1. Désactiver le WP-Cron interne pour qu'il s'exécute au chargement de la page.
  2. Configurez une fonction cron qui envoie une requête get au fichier wp-cron.php à intervalles réguliers en fonction de vos préférences..

Oui, c'est aussi simple que ça. Seulement deux étapes pour que les choses se passent mieux.

REMARQUE: Avant de suivre cette méthode, veuillez noter que la désactivation de WP-Cron interne peut également entraîner un dysfonctionnement du site Web, en fonction de votre configuration ou des plugins utilisés..

1. Désactiver la fonction interne WP-Cron

Ouvrez le fichier wp-config.php dans le bloc-notes ou l'éditeur de votre choix et ajoutez les deux lignes ci-dessous en haut..

 // Désactive la fonction interne Wp-Cron define ('DISABLE_WP_CRON', true);

Ceci arrêtera maintenant l'exécution de la fonction interne WP-Cron et n'appellera pas le fichier wp-cron.php.

2. Configurez une vraie fonction cron à partir du panneau de configuration de votre hôte

Si vous êtes autorisé à configurer des tâches cron, vous devez configurer un cron comme suit:

wget http://www.server.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1


Voici les étapes à suivre pour effectuer cette opération à partir d'un hôte basé sur cPanel..

1. Accédez au cPanel de votre compte

Habituellement, le lien est http://votresiteweb.com/cpanel ou http://votresiteweb.com:2082. Une fois que vous entrez votre identifiant et votre mot de passe, puis entrez dans le panneau de configuration, faites défiler la liste jusqu'à la section "Options avancées".

2. Allez à la page Paramètres Cron

Cliquez sur l'icône "Cron Jobs" dans la section avancée.

3. Configurer une tâche cron

Sur la nouvelle page, vous trouverez une section "Ajouter un nouveau travail" similaire à celle de l'image ci-dessus. Dans le champ déroulant Paramètres communs, sélectionnez "Toutes les 5 minutes…". Une fois que vous avez sélectionné cette option, les autres champs seront automatiquement renseignés avec les informations nécessaires. Dans l'étape suivante, je vais expliquer mon intention de configurer un intervalle de 5 minutes pour exécuter le script..

Dans le champ de commande, ajoutez la ligne ci-dessous. N'oubliez pas d'ajouter l'adresse correcte du site.

wget http://www.votresiteweb.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1

Enfin, cliquez sur le bouton "Ajouter un nouveau travail".

À partir de maintenant, le serveur demandera le fichier wp-cron.php toutes les 5 minutes. La raison pour laquelle j'ai défini ce paramètre à 5 minutes, c’est que j’ai principalement défini le temps d’exécution du script sur 4 minutes au lieu de 60 secondes. Ceci est fait pour pouvoir charger des fichiers images volumineux, des processus de sauvegarde, etc. Cependant, vous pouvez également modifier les paramètres et choisir d'autres options pour exécuter le cron toutes les minutes..

REMARQUE: Cela fonctionne bien pour les sites Web WordPress généraux. Pour ceux qui utilisent un réseau WordPress, des éléments supplémentaires peuvent être nécessaires, veuillez donc ne pas suivre les étapes ci-dessus si vous utilisez la version multisite de WordPress..


Conclusion

Si vous rencontrez des problèmes ou avez d'autres idées, n'hésitez pas à partager vos commentaires ci-dessous!