Aperçu de WP-Cron

WP-Cron exécute des tâches spécifiques pour les sites alimentés par WordPress. Le nom Cron vient du système Unix pour la planification des tâches, allant d’une fois par minute à une fois par an. Qu’il s’agisse d’une maintenance de routine ou d’alertes planifiées, toute commande pouvant être exécutée sous Unix sans intervention de l’utilisateur peut être planifiée en tant que tâche Cron.

WP-Cron est de nature similaire à Cron, mais diffère de plusieurs manières très importantes. Cette fonctionnalité est conçue uniquement pour gérer les tâches de routine WordPress:

  • Rechercher une nouvelle version du noyau, des thèmes et des plugins WordPress
  • Nettoyer le spam

Les plugins et thèmes peuvent ajouter des tâches à exécuter à intervalles réguliers. Par exemple, si vous avez un plugin qui scanne Twitter pour vos tweets et les intègre ensuite dans les commentaires, cela se fait très probablement avec un travail WP-Cron. WP-Cron ouvre un tout nouveau monde de choses qu’un site alimenté par WordPress peut faire.

Comment WP-Cron est-il déclenché ?

La principale différence entre Cron et WP-Cron est la façon dont WP-Cron est déclenché. Cron est un processus système qui s’exécute toutes les minutes et recherche des tâches à exécuter. WP-Cron, car il s’agit d’un système basé sur le Web, ne peut fonctionner que lorsque quelqu’un visite le site. Par conséquent, lorsque quelqu’un navigue sur votre site WordPress, WP-Cron vérifie si quelque chose doit être fait. Grâce aux développeurs de base de WordPress, il le fait d’une manière qui n’affecte pas négativement les performances de votre site.

Problèmes Avec les sites à faible trafic

Les sites WordPress à faible trafic peuvent rencontrer des tâches ignorées lorsque cette fonctionnalité est déclenchée par les visiteurs. Si des personnes ne visitent pas votre site, WP-Cron ne peut pas s’exécuter. Cela ne signifie pas que votre page sera lente par rapport aux travaux précédents lorsque quelqu’un finira par visiter votre site. Quel que soit le nombre de tâches que WP-Cron doit exécuter, elles sont exécutées en arrière-plan afin que les performances de votre site ne soient pas affectées.

Problèmes avec les sites à fort trafic

Si votre site alimenté par WordPress est à fort trafic, vous pouvez rencontrer des problèmes avec WP-Cron. Les principaux problèmes qui se posent sont les conditions de course et les processus de longue durée.

  • Conditions de course: Lorsque plusieurs utilisateurs visitent votre site et déclenchent WP-Cron pour exécuter la même tâche. WP-Cron travaille dur pour éliminer les conditions de course, mais elles peuvent toujours se produire, en particulier sur les sites à fort trafic.
  • Processus de longue durée: Toute tâche qui prend plus de temps que les 60 secondes standard pour s’exécuter. Les développeurs peuvent ajuster la durée d’exécution d’une tâche PHP avec la fonction set_time_limit(). Si cela est défini pour être plus long que la fenêtre entre les tâches, vous pouvez vous retrouver avec plus d’une copie de wp-cron.php en cours d’exécution.

Ces deux problèmes sont traités dans le verrouillage interne de WP-Cron et ne sont pas des problèmes courants; cependant, ils peuvent encore se produire occasionnellement.

Gérer WP-Cron en interne

WP-Cron est préconfiguré et prêt à fonctionner, vous n’avez donc rien à faire pour l’activer sur vos sites WordPress.

Lors de l’installation initiale de WordPress, plusieurs tâches sont automatiquement configurées. Vous pouvez utiliser quelques commandes simples de la ligne de commande, ou l’un des nombreux plugins, pour trouver les travaux exacts exécutés par WP-Cron.

WP-Cron De la CLI

Si vous avez installé Terminus, vous pouvez facilement voir tous les détails de ce qui se passe avec WP-Cron. Terminus, via WP-CLI, peut vous montrer des détails tels que:

  • Ce qui est prévu pour s’exécuter
  • Ce qui va s’exécuter ensuite
  • Les hooks d’événements qui sont configurés

Vous pouvez également planifier vos propres tâches, exécuter des tâches existantes et gérer à peu près tout ce qui est lié à WP-Cron — le tout à partir de la ligne de commande.

Une des premières choses que vous voudrez faire est de tester WP-Cron pour vous assurer que tout fonctionne correctement. Lorsque vous exécutez la commande ci-dessous, assurez-vous de remplacer SITE_NAME par le nom de votre site à partir de votre tableau de bord Pantheon et remplacez ENV_NAME par l’environnement souhaité (nom de branche « dev », « test », « live » ou multidev).

terminus wp <site>.<env> -- cron test

Si tout fonctionne correctement, le résultat ressemble à ceci:

Success: WP-Cron spawning is working as expected.

Cela vous permet de savoir que WP-Cron fonctionne correctement sur votre site. De là, vous pouvez exécuter n’importe quelle commande liée à cron avec WP-CLI. Lorsque vous utilisez WP-CLI pour gérer votre site WordPress hébergé par Pantheon, vous devez utiliser Terminus. Le format de la commande est le suivant :

terminus wp <site>.<env> -- cron <your wp-cron command and switches here>

Toutes les commandes terminus wp nécessitent un nom de site et un environnement pour fonctionner.

Remarque

Si vous avez protégé votre site à l’aide du paramètre de sécurité de votre tableau de bord, Terminus ne pourra pas exécuter cron et vous pouvez voir des erreurs de rapport d’état sur le tableau de bord.

Plugins

Si vous voulez garder un œil sur WP-Cron mais que vous n’aimez pas la ligne de commande, il existe plusieurs plugins que vous pouvez utiliser. WP Crontrol, par exemple, vous montrera tous les événements programmés pour votre site. Vous pouvez créer, modifier, exécuter ou supprimer des tâches immédiatement depuis votre tableau de bord d’administration WordPress. Vous pouvez également accrocher de nouvelles actions dans des plannings ou déplacer des actions existantes vers de nouveaux plannings à partir de la section Outils.

WPX Cron Manager Lite fera un travail similaire avec une interface utilisateur légèrement différente. Ce plugin vous oblige à effectuer une installation unique du framework WPX, ce que vous pouvez faire directement depuis la page du gestionnaire de plugins.

Gérer WP-Cron en externe

Si vous recherchez plus de contrôle sur les tâches cron de votre site, ou si vous ne souhaitez pas que WP-Cron gère les tâches en interne, vous pouvez utiliser des crons externes à la place. Cela résoudra les problèmes discutés ci-dessus pour les sites à fort trafic et à faible trafic.

Désactiver WP-Cron

La première chose à faire est de désactiver le traitement interne de WP-Cron. Ajoutez la ligne suivante à votre fichier wp-config.php :

wp-config.php
define('DISABLE_WP_CRON', true);

Remarque

WP-Cron s’occupe de nombreuses tâches importantes, alors soyez prêt à effectuer toutes les étapes ci-dessous.

Services gratuits

Une fois que vous avez désactivé WP-Cron, vous aurez besoin d’un service qui appelle une URL à intervalles réguliers. La façon la plus simple de le faire est de créer un compte avec un service cron gratuit:

  • EasyCron
  • Set Cron Job
  • cron-job

L’un des services ci-dessus fera le travail. En désactivant WP-Cron, vous avez désactivé la vérification et l’appel automatiques du script wp-cron.php. Vous devrez maintenant appeler cette URL vous-même en utilisant l’un des services ci-dessus. Avec la plupart d’entre eux, c’est aussi simple que cela :

  1. Créer un compte
  2. Configurer un travail qui appelle https://yourdomain.tld/wp-cron.php?doing_wp_cron

Remarque

Remplacez votre domaine.tld ‘ avec votre domaine.

Selon le service que vous utilisez, vous pouvez avoir la possibilité de configurer plusieurs tâches à des moments différents. Créer une tâche unique qui appelle le script wp-cron.php de votre site toutes les 15 minutes est tout ce dont vous devriez avoir besoin. WP-Cron s’occupera du reste. Si vous créez de nouveaux horaires qui doivent être exécutés plus d’une fois toutes les 15 minutes, vous devrez ajuster votre travail en conséquence.

Il est important que vous n’ajoutiez pas de valeur à la variable de requête doing_wp_cron ; elle doit être vide pour que le cron fonctionne correctement.

En utilisant votre propre serveur

Si vous administrez votre propre serveur, vous pouvez utiliser le service cron pour faire un appel au script wp-cron.php. Vous devrez apprendre à configurer correctement un travail Cron et utiliser quelque chose comme wget ou curl pour récupérer une page Web. À moins que vous ne preniez des précautions particulières, il n’est pas plus sûr d’utiliser votre propre serveur par rapport à un service cron basé sur le Web; cependant, cela vous donne plus de contrôle.

Sécurité

Pour la plupart, wp-cron.php est sécurisé. Il n’y a qu’un seul paramètre que vous pouvez transmettre qui affectera le script (doing_wp_cron). Cette valeur $_GET n’est pas filtrée; il n’est utilisé que comme indicateur et non comme entrée pour un processus ou une variable. Au-delà, toutes les entrées sont ignorées.

Bien qu’aucun script sur un serveur connecté à Internet ne soit sécurisé à 100%, wp-cron.php ne présente actuellement aucune vulnérabilité ou exploit connu.

Plugins Cron WordPress

WordPress possède de nombreux plugins qui contrôlent à la fois les tâches WP-Cron internes et les tâches Cron externes. Étant donné que Pantheon ne fournit pas de services Cron, nous ne recommandons ni ne décourageons l’utilisation d’aucun plugin donné. Nous vous encourageons à consulter la liste des plugins Cron WordPress et à expérimenter dans votre environnement de développement pour trouver celui qui convient le mieux à vos besoins.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.