Régler définitivement le problème des tâches CRON sous WordPress.

WordPress sait être parfois capricieux pour exécuter des tâches programmées. Cette fonction peut se mettre en vrac sans que l’on sache vraiment le pourquoi du comment. Mais comment faire quand nous utilisons cette fonctionnalité pour la sauvegarde de notre blog, la programmation d’article ou encore l’analyse antivirus. Ce tutoriel vous propose des pistes de résolution.

wordpress_cron_1

Toutes les tâches planifiées sont gérées par le fichier wp_cron. Cette fonction s’active au moment du chargement des pages. Lorsqu’un visiteur se promène sur votre site wp_cron s’active à chaque chargement de page et vérifie si des actions programmées sont en attente d’exécution.

Ce fonctionnement assez bizarre peu alourdir le temps de chargement de vos pages, voir dans des cas extrême bloquer WordPress. De plus si vous ne recevez aucune visite durant une période déterminée les action programmées ne seront pas exécutées.

Nous verrons dans ce tutoriel comment désactiver le cron de wordpress pour le remplacer par le vrai cron de votre hébergeur.

Utiliser votre client FTP préféré pour vous connectez sur votre compte d’hébergement et éditer le le fichier wp-config.php et rajouter la ligne suivante :

/** Desactivate WordPress WP_CRON **/
define ('DISABLE_WP_CRON', true);

wordpress_cron_2

 Fermer et sauvegarder le fichier. Ca y est wp-cron est désactivé. Maintenant nous allons le remplacer par la fonction CRON de votre hébergeur. Actuellement mon hébergeur utilise CPANEL.

wordpress_cron_3

Connectez-vous à votre interface de gestion de votre hébergement.

wordpress_cron_4

 Ensuite déplacez-vous dans la section Avancé de Cpanel et cliquer sur Tâches Cron.

wordpress_cron_5

  • 1: Indiquer une adresse mail pour vous indiquer si la tâche cron s’est effectuée.
  • 2: Sélectionner un intervalle pour exécuter la tache, ici la tâche s’exécutera toutes les 15 minutes.
  • 3: Saisissez la commande a exécuter, puis cliquer sur le bouton Ajouter une nouvelle tâche Cron.
  • 4: Liste des tâches Cron active sur votre hébergement.

Pour exécuter les tâches Cron de wordpress vous devez saisir dans la ligne Commande :

wget -O - -q -t 1 http://www.yourwebsite.com/wp-cron.php > /dev/null 2>&1
  • -O – exécute la commande et généré un fichier de log, qui sera ici rediriger vers nul part > /dev/null
  • q exécute la commande sans générer de sortie à la console
  • t 1 effectue un essai et s’arrête en cas de problème, par défaut wget essaie 20 fois en cas d’erreur avant de s’arrêter.

wordpress_cron_6

Avant de mettre en production cette commande vous devez remplacer www.yourwebsite.com par l’adresse de votre blog.

Vous avez maintenant une tâche cron qui va s’exécuter toutes les 15 minutes quoiqu’il arrive et en plus vous avez améliorer la rapidité de votre blog. Mais que demander de plus !

PS: Si vous connaissez un bon plugin ou une technique pour afficher les bouts de code dans un article WordPress, n’hésiter pas à laisser un commentaire ou à m’envoyer un mail via le formulaire de Contact. D’avance merci.

That’s All.

6 Potins

  1. Bonjour,
    Merci pour l’article.
    Pour présenter le code dans WP, j’utilise Crayon. Très bon, et très simple à utiliser.

  2. Bonjour,

    Pour ceux ne veulent pas causer problème en utilisant WP système Cron, et ne ont pas Cron serveur adéquat, essayer ce plugin WordPress http://wordpress.org/plugins/easycron/.

  3. Je pense que c’est entre le zéro et la lettre O mais vu que WordPress modifie certains caractères de temps en temps c’est pénible.

    @noaneo : Quel plugin utilises-tu pour afficher du code dans tes articles ?

    @+

  4. bonjour,
    tous les hébergeurs proposent leur cron ?

    je n’arrive pas à voir la différence entre les 2 phrase de geekpauvre, c’est quoi la différence ?
    Merci

  5. Bonsoir,

    l’encodage exacte (si wordpress ne me remplace rien ) est :

    wget -O – -q -t 1 http://www.yourwebsite.com/wp-cron.php > /dev/null 2>&1

    @+

  6. Merci pour l’astuce. Juste pour être sur, peux tu confirmer l’encodage de la commande wget ?

    wget -O – -q -t 1 http://www.yourwebsite.com/wp-cron.php > /dev/null 2>&1

    ou bien

    wget -O – -q -t 1 http://www.yourwebsite.com/wp-cron.php > /dev/null 2>&1

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *