Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig


Définition

Qu'est-ce que WP-Cron ?

WP-Cron est le mécanisme interne de WordPress censé imiter le service cron de Linux pour exécuter des tâches planifiés en arrière-plan sur WordPress. Ceci permet, entre autres, d'effectuer les mises à jour automatiques, les préchauffage de cache et les tâches de maintenances de WooCommerce. Les plugins ayant accès à cette mécanisme, ceux-ci ipeuvent ajouter des tâches à exécuter afin de planifier des actions supplémentaires. Vous pouvez en savoir plus sur notre billet de blog dédié : Qu’est-ce que le CRON de WordPress ?

Pourquoi déclencher WP-Cron avec un cronjob ?

WP-Cron a été initialement pensé pour remplacer cronjob sur les formules d'hébergements web ne permettant pas d'ajouter un script sur le service cron de Linux. Par conséquent, le WP-Cron déclenche l'exécution des tâches grâces aux requêtes effectués sur le fichier wp-cron.php, lors de requêtes AJAX effectués sur wp-admin/admin-ajax.php, et/ou lors du chargement de la page. Ainsi, le facteur déclencheur de ces requêtes HTTP reste inévitablement la visite du site web. Par conséquent, le chargement de la page sera encombré par exécution des tâches WP-Cron et les performances pourront ainsi être diminués. Pire, certains plugins ajoutent des tâches beaucoup trop longues sur Wp-Cron, au point de dépasser les temps d'attentes possible en HTTP. Et le plus dérrangeant, l'exécution des tâches pourraient être retardés car il n'y a pas de visiteur sur le site au moment où la tâche aurait dû être exécuté. Certains tâches pourraient donc cumuler, et à l'ouverture de la page par un visiteur, il se peut que des dizaines voire centaines de tâches planifiés sont lâchés, pénalisant grandement le temps de chargement pour ce malheureux visiteur.

Déclencher WP-Cron avec un cron job permet donc d'assurer l'exécution des tâches planifiés avec WP-Cron sans affecter les visiteurs : wp-cron.php sera alors exécuté à intervalle régulier, qu'il y ait ou non de visiteurs, et les visiteurs, eux, peuvent immédiatement ouvrir le site sans attendre que des tâches en attente ne soient exécutés.

Procédure

Qu'est-ce que WP-Cron ?

WP-Cron est le mécanisme interne de WordPress censé imiter le service cron de Linux pour exécuter des tâches planifiés en arrière-plan sur WordPress. Ceci permet, entre autres, d'effectuer les mises à jour automatiques, les préchauffage de cache et les tâches de maintenances de WooCommerce. Les plugins ayant accès à cette mécanisme, ceux-ci ipeuvent ajouter des tâches à exécuter afin de planifier des actions supplémentaires. Vous pouvez en savoir plus sur notre billet de blog dédié : Qu’est-ce que le CRON de WordPress ?

Pourquoi déclencher WP-Cron avec un cronjob ?

WP-Cron a été initialement pensé pour remplacer cronjob sur les formules d'hébergements web ne permettant pas d'ajouter un script sur le service cron de Linux. Par conséquent, le WP-Cron déclenche l'exécution des tâches grâces aux requêtes effectués sur le fichier wp-cron.php, lors de requêtes AJAX effectués sur wp-admin/admin-ajax.php, et/ou lors du chargement de la page. Ainsi, le facteur déclencheur de ces requêtes HTTP reste inévitablement la visite du site web. Par conséquent, le chargement de la page sera encombré par exécution des tâches WP-Cron et les performances pourront ainsi être diminués. Pire, certains plugins ajoutent des tâches beaucoup trop longues sur Wp-Cron, au point de dépasser les temps d'attentes possible en HTTP. Et le plus dérrangeant, l'exécution des tâches pourraient être retardés car il n'y a pas de visiteur sur le site au moment où la tâche aurait dû être exécuté. Certains tâches pourraient donc cumuler, et à l'ouverture de la page par un visiteur, il se peut que des dizaines voire centaines de tâches planifiés sont lâchés, pénalisant grandement le temps de chargement pour ce malheureux visiteur.

Déclencher WP-Cron avec un cron job permet donc d'assurer l'exécution des tâches planifiés avec WP-Cron sans affecter les visiteurs : wp-cron.php sera alors exécuté à intervalle régulier, qu'il y ait ou non de visiteurs, et les visiteurs, eux, peuvent immédiatement ouvrir le site sans attendre que des tâches en attente ne soient exécutés.

Etape 1 : Désactiver l'exécution de WP-Cron lors du chargement d'une page

Dans un premier lieu, il sera nécessaire de désactiver l'exécution de WP-Cron lors du chargement d'une page. Ceci s'effectue en ajoutant la ligne suivante dans votre fichier wp-config.php :

define( 'DISABLE_WP_CRON', true );

Pour cela, rendez-vous dans votre client FTP, connectez-vous à votre compte FTP et éditez le fichier wp-config.php :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Etape 2 : Déclencher wp-cron.php depuis un cron job

Dans votre panneau de contrôle ISPConfig, rendez-vous sur Sites > Tâches cron et cliquez sur "Nouveau cron" :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Renseignez ensuite un cronjob qui s'exécute toutes les minutes et qui exécute le fichier wp-cron.php :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

La commande à exécuter, "php7.4 [web_root]/wp-cron.php" pourra être ajusté :

  • php7.4 indique le binaire PHP à utiliser. Si votre site web utilise une autre version, veillez à ajuster la version indiquée.
  • [web_root] représente le dossier "web" dans votre FTP. Veillez également à l'ajuster si votre site WordPress se trouve dans un répertoire particulier.

La case à cocher "Log output" permet le loguer la sortie de wp-cron dans le dossier "private" de votre compte FTP. Vous pouvez le cocher si vous souhaitez disposer des sorties stdout et stderr de wp-cron.php, utile par exemple lors des débogages.

Vous pouvez en savoir plus sur les tâches planifiés cron job sur votre VPS sur l'article dédié.

Quelques pièges à éviter

Par défaut, les sites créés sur ISPConfig ne sont associés à aucun compte client :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Si toutefois vous avez volontairement associé votre site web à un compte client ou revendeur créé sur ISPConfig, alors ce compte pourrait disposer de certaines limites cron qui pourraient empêcher le bon fonctionnement du cron. Pour vérifier ces limites, rendez-vous dans l'édition du compte client/revendeur dans l'onglet Limits :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Assuez-vous alors d'avoir bien choisi Full cron afin que le cronjob ne s'exécute pas dans un jail chroot limité qui ne dispose pas de toutes les fonctionnalités nécessaires pour le bon fonctionnement du cronjob :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Assurez-vous également de mettre le délai minimum entre deux exécutions sur "1" afin que le cronjob puisse s'exécuter toutes les minutes.

Si vous avez déjà créé des crons jobs et/ou des utilisateurs shell pour le site, il sera nécessaire de supprimer tous les cronjobs existants et tous les utilisateurs shells, et ensuite de les recréer, afin que ISPConfig les passe d'un environnement chroot à un environnement full cron.

Pour aller plus loin

Quelques pièges à éviter

Par défaut, les sites créés sur ISPConfig ne sont associés à aucun compte client :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Si toutefois vous avez volontairement associé votre site web à un compte client ou revendeur créé sur ISPConfig, alors ce compte pourrait disposer de certaines limites cron qui pourraient empêcher le bon fonctionnement du cron. Pour vérifier ces limites, rendez-vous dans l'édition du compte client/revendeur dans l'onglet Limits :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Assuez-vous alors d'avoir bien choisi Full cron afin que le cronjob ne s'exécute pas dans un jail chroot limité qui ne dispose pas de toutes les fonctionnalités nécessaires pour le bon fonctionnement du cronjob :

Déclencher WP-Cron avec un cronjob sur un site WordPress avec ISPConfig

Assurez-vous également de mettre le délai minimum entre deux exécutions sur "1" afin que le cronjob puisse s'exécuter toutes les minutes.

Si vous avez déjà créé des crons jobs et/ou des utilisateurs shell pour le site, il sera nécessaire de supprimer tous les cronjobs existants et tous les utilisateurs shells, et ensuite de les recréer, afin que ISPConfig les passe d'un environnement chroot à un environnement full cron.

Notez cet article

Vous avez noté 0 étoile(s)

Cet article a été lu 5029 fois.

Note : 5 / 5 - 2 avis.

comments powered by Disqus
Top