Le cron intégré de WordPress a été conçu pour reproduire le comportement d’un Cron Job système, mais il n’en est rien, et niveau performance ce système peut vite devenir un gouffre de performances. Il est pourtant très important car il permet la planification d’articles, la recherche et l’installation de mises à jours automatiques pour les plugins, thèmes et CORE WordPress..

bldwebagency wp cron cronjob linux nginx performances 2

Le cron WordPress

Le cron intégré à WordPress et développé par la société, fonctionne comme un cron système à la différence près qu’il ne sera exécuté que si des visiteurs chargent les différentes pages du site. En effet, ces actions planifiées ne sont exécutés qu’au chargement des pages. Si le site n’a que très peu, ou pas de visites : aucune tâche ne sera lancée.

Au contraire, pour un site avec de nombreuses visites, des Workers PHP seront utilisés pour lancer les différentes actions planifiées et vérifier leur état, d’aussi nombreuses fois que le nombre de chargement des pages. Ceci va donc engendrer une charge inutile du cœur de WordPress et de son hébergement.

Pour résumer, pour un site avec une centaine de visites par jour, le cron le WordPress peut largement suffire. Par contre, dès lors qu’un site n’aura que très peu de visites, ou au contraire, un très grand nombre : le cron WordPress atteindra ses limites. Pour optimiser ce fonctionnement et améliorer les performances de son site, il existe une solution : le cron externalisé.

Retrouvez notre article sur la mise en place de WordPress sur un serveur Dédié Nginx / PHP FPM et SSL (Certbot).

Désactivation du cron WordPress

Nous allons dans un premier temps désactiver le cron WordPress en passant par le fichier wp-config.php et en y ajoutant la ligne suivante :

define( 'DISABLE_WP_CRON', 'true' );

Ou en passant par WP-CLI :

wp config set DISABLE_WP_CRON true

A ce stade, plus aucune action planifiée ne sera exécutée sur le site : prévoyez ces opérations en soirée, ou lorsque qu’aucune planification n’est prévue.

Mise en place d’un scheduler externe pour WordPress

Pour la mise en place d’un cron externe WordPress, plusieurs solutions s’offrent à vous :

  • Utilisation de la crontab sur un serveur dédié ou VPS
  • Utilisation de l’interface web de gestion des crons pour du CPANEL
  • Utilisation d’un service externe comme EasyCron

Mise en place d’une tâche planifiée linux pour WordPress

Connectez-vous à votre serveur en SSH puis ajoutez à la crontab système ou la crontab de l’utilisateur exécutant les process FPM :

crontab -u bldwebagency -e

Ajoutez ensuite a la crontab la ligne suivante :

*/15 * * * * /usr/bin/php /repertoire/vers/racine/site/wp-cron.php >> /var/log/wordpress.cron.log

Adaptez la fréquence de passage de votre tâche planifiée au regard de ce qui est schedule au sein de votre site : */5 ou */10.

Mise en place d’une tâche planifiée CPANEL pour WordPress

Dans CPANEL, l’interface Web vous permet de créer une tâche planifiée en 3 clics : rendez-vous dans le menu Cron Jobs :

cPanel cron jobs

Ensuite, renseignez les différents champs pour planifier l’opération, ou choisissez un Common Settings :

cPanel paramètres cron job

Appel du fichier wp-cron.php de WordPress

Le déclenchement des tâches planifiées WordPress peut se faire de deux façons :

En exécutant via le binaire PHP le fichier wp-cron.php :

/usr/bin/php /repertoire/vers/racine/site/wp-cron.php

Ou en appelant le fichier via l’URL du site ( dans le cadre d’une mise en place d’un cron externalisé : ex EasyCron) :

wget -q -O - https://www.bldwebagency.fr/wp-cron.php?doing_wp_cron >/dev/null 2>&1