Aller au contenu
Sommaire
Sites web

Configurer et gérer les tâches cron

Traduction automatique. L'original en anglais est disponible si besoin.

Une tâche cron exécute une commande selon un horaire, en arrière-plan, que quelqu'un visite votre site ou non. Ce guide explique comment en ajouter une dans KPanel, comment rédiger correctement l'horaire et la commande pour cette plateforme, comment remplacer le planificateur intégré peu fiable de WordPress, et comment retrouver la sortie lorsqu'une tâche ne fait pas ce que vous attendiez.

Où se trouve le cron dans KPanel

Le cron appartient à un site, vous y accédez donc depuis le site plutôt que depuis le menu principal :

  1. Connectez-vous à KPanel et cliquez sur Sites web dans la barre latérale gauche.
  2. Cliquez sur le site souhaité.
  3. Dans le menu propre au site, ouvrez Paramètres, puis Cron.

L'adresse directe est /websites/<site-id>/cron. Vous verrez un tableau des tâches existantes, ou un état vide si le site n'en a aucune.

La page Cron d'un site dans KPanel, répertoriant les tâches planifiées sur ce site

Ajouter une tâche

Cliquez sur Ajouter une tâche cron en haut à droite. Le formulaire comporte trois champs.

Horaire

Six boutons prédéfinis remplissent l'expression pour vous :

BoutonExpression
Chaque minute* * * * *
Toutes les 5 min*/5 * * * *
Chaque heure0 * * * *
Quotidien 2h0 2 * * *
Hebdomadaire dimanche0 2 * * 0
Mensuel 1er0 2 1 * *

Ou saisissez la vôtre dans Expression cron. Les cinq champs, dans l'ordre, sont minute, heure, jour du mois, mois, jour de la semaine :

minute  hour  day-of-month  month  day-of-week
  • 0 3 * * * s'exécute à 3h00 chaque jour.
  • */15 * * * * s'exécute toutes les quinze minutes.
  • 0 9 * * 1 s'exécute à 9h00 chaque lundi.
  • 30 1 1 * * s'exécute à 1h30 le premier de chaque mois.
  • 0 */6 * * * s'exécute toutes les six heures, à l'heure pile.

Étiquette

Un nom que vous reconnaîtrez plus tard, comme WordPress cron ou Nightly stock sync. C'est ce que le tableau des tâches vous affiche, rendez-le donc descriptif : job 3 n'aide personne à 2h du matin.

Commande

La commande shell à exécuter. Cliquez sur Save pour créer la tâche.

Utilisez des chemins complets. Le cron s'exécute avec un environnement minimal et sans aucun de vos profils shell, donc une simple php ou un répertoire relatif qui fonctionne lorsque vous êtes connecté via SSH échouera ici silencieusement. Écrivez le chemin complet, à chaque fois.

Rédiger la commande

Les tâches s'exécutent en tant qu'utilisateur système propre à votre site, votre répertoire personnel est donc le bon point d'ancrage et ~ se résout correctement. Les fichiers de votre site se trouvent à :

~/htdocs/yourdomain.co.nz

Vous pouvez confirmer le chemin exact dans l'onglet Paramètres, puis SFTP du site, qui l'affiche sous Fichiers du site.

Commandes typiques :

cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report

Testez la commande avant de la planifier. Collez-la dans la section WordPress, puis Console du site s'il s'agit d'une commande wp, ou exécutez-la via SSH. Une tâche qui n'allait jamais fonctionner est bien plus facile à repérer à l'invite de commande qu'à 3h du matin dans un fichier journal.

Remplacer le planificateur intégré de WordPress

WordPress est livré avec son propre pseudo-planificateur, WP-Cron, qui ne se déclenche que lorsque quelqu'un charge une page. Sur un site peu fréquenté, les articles planifiés sont publiés en retard et les e-mails s'accumulent sans être envoyés. Sur un site très fréquenté, chaque visiteur paie le coût de la vérification de l'horaire.

Une véritable tâche cron corrige les deux problèmes. KPanel effectue tout le basculement pour vous :

  1. Ouvrez le site, puis l'onglet WordPress.
  2. Ouvrez la section WP-Cron.
  3. Cliquez sur Activer le cron système.

Cela ajoute un horaire qui exécute WP-Cron toutes les cinq minutes et définit DISABLE_WP_CRON afin que les chargements de page cessent également de le déclencher. Supprimer cron système sur le même écran annule les deux moitiés.

Si vous préférez le faire manuellement, cela se fait en deux étapes :

Désactiver la version déclenchée par les visiteurs. Ajoutez ceci à wp-config.php, au-dessus de la ligne /* That's all, stop editing! */, en utilisant Paramètres, puis Gestionnaire de fichiers :

define( 'DISABLE_WP_CRON', true );

Ajouter la véritable tâche. Dans Paramètres, puis Cron :

  • Horaire : */5 * * * *
  • Étiquette : WordPress cron
  • Commande : cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now

Ne sautez pas la moitié DISABLE_WP_CRON. Avec les deux en cours d'exécution, chaque tâche planifiée peut se déclencher deux fois : e-mails en double, traitement des commandes en double, débits en double sur un plugin d'abonnement. Utilisez l'action en un clic de la section WP-Cron et cela ne pourra pas vous arriver.

WooCommerce et files d'attente en arrière-plan

WooCommerce utilise une file d'attente en arrière-plan pour les changements de statut de commande, les renouvellements d'abonnement, les e-mails et les mises à jour de stock. Il s'appuie sur WP-Cron, c'est donc exactement le type de charge de travail qui souffre sur une boutique peu fréquentée.

Une fois le véritable horaire en place, la file d'attente est traitée toutes les cinq minutes. Surveillez-la dans WooCommerce, puis Status, puis Scheduled Actions dans wp-admin.

Une boutique à fort volume peut passer à */2 * * * *. Descendre en dessous de ce seuil aide rarement : vous passez plus de temps à démarrer des processus qu'à effectuer le travail. Voir Configurer WooCommerce.

Gérer les tâches existantes

Le tableau des tâches affiche Label, Schedule, Command, Dernière exécution et Status, avec deux actions sur chaque ligne :

  • Disable met une tâche en pause sans la supprimer, et devient Enable pour la réactiver. Utilisez ceci lorsque vous testez si une tâche cause un problème.
  • Delete la supprime définitivement. On vous demande de confirmer, et les exécutions planifiées s'arrêtent immédiatement.

La suppression d'une tâche cron est irréversible. L'horaire est retiré du serveur sur le champ. Si vous essayez seulement de l'arrêter temporairement, utilisez Disable.

Trouver la sortie

Chaque tâche créée par KapsuleHost voit sa sortie capturée pour vous. La sortie standard et les erreurs sont ajoutées à un fichier journal dans un répertoire cron-logs situé dans le répertoire personnel de l'utilisateur de votre site, un fichier par tâche.

Ce journal répond à presque toutes les questions du type « ma tâche s'est-elle exécutée ? », car il enregistre ce que la commande a affiché et toute erreur qu'elle a soulevée.

Pour le lire, connectez-vous via SSH et regardez dans ~/cron-logs/. SSH utilise l'authentification par clé, ajoutez donc d'abord votre clé publique depuis l'onglet Paramètres, puis Clés SSH du site : voir Ajouter des clés SSH.

Le Gestionnaire de fichiers et les comptes SFTP sont confinés à votre répertoire de site, ~/htdocs/yourdomain.co.nz, et cron-logs se trouve un niveau au-dessus. C'est délibéré : cela empêche un prestataire disposant d'un accès SFTP d'accéder à autre chose que le site web. Utilisez SSH natif pour atteindre les journaux, ou redirigez la sortie vers votre répertoire de site comme indiqué ci-dessous.

Si vous préférez avoir la sortie quelque part où le Gestionnaire de fichiers peut l'ouvrir, redirigez-la vous-même :

cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1

2>&1 envoie les erreurs vers le même fichier que la sortie normale. Sans cela, les erreurs ne vont nulle part.

Tout ce qui se trouve dans votre répertoire de site peut potentiellement être demandé via le web. Placez un journal redirigé sous wp-content plutôt qu'à la racine du site, donnez-lui un nom que personne ne devinerait, et supprimez-le une fois votre débogage terminé.

Bonnes pratiques

  • Échelonnez vos horaires. Six tâches réglées sur 0 2 * * * démarrent toutes en même temps. Répartissez-les : 0 2, 10 2, 20 2.
  • N'utilisez pas « chaque minute » sauf si c'est vraiment nécessaire. */5 suffit pour presque tout, y compris WordPress et WooCommerce.
  • Gardez les tâches courtes. Une tâche qui prend plus de temps que son intervalle chevauchera l'exécution suivante.
  • Redirigez la sortie pour tout ce qui est verbeux, afin qu'une tâche bavarde ne remplisse pas votre disque.
  • Vérifiez la liste de temps en temps. Les tâches laissées par un plugin que vous avez supprimé continuent de s'exécuter.

Dépannage

La tâche ne semble jamais s'exécuter. Vérifiez d'abord le chemin. Ouvrez le fichier journal. Puis confirmez que le statut est Active et non Disabled. Ensuite, exécutez la même commande via SSH et voyez ce qu'elle indique.

« command not found » dans le journal. Un chemin complet manquant. Utilisez /usr/bin/php, /usr/bin/wp, /usr/bin/curl plutôt que le nom seul.

Permission refusée. La tâche s'exécute en tant qu'utilisateur système de votre site. Cet utilisateur doit posséder, ou au moins pouvoir lire, tout ce que la commande touche. Vérifiez les permissions dans Utiliser le Gestionnaire de fichiers.

Les tâches WordPress s'exécutent toujours en retard. Confirmez que les deux moitiés du basculement sont en place : l'horaire existe dans Paramètres, puis Cron, et DISABLE_WP_CRON est défini. La section WP-Cron de l'onglet WordPress affiche l'état actuel des deux.

La tâche s'exécute mais le site est lent pendant ce temps. Déplacez-la vers une heure plus calme, ou divisez le travail en lots plus petits. L'utilisation des ressources au niveau du site est visible sous Performances : voir Améliorer la vitesse du site web.

Une tâche a cessé de fonctionner après une mise à jour de plugin. Le chemin de la commande a peut-être changé. Vérifiez le journal, puis mettez à jour la commande depuis le tableau des tâches en supprimant l'ancienne tâche et en en ajoutant une corrigée.

Cet article vous a-t-il aidé ?

Vous êtes une IA ? Lisez cette page en Markdown

Articles connexes

Connexion via SFTP : FileZilla, Cyberduck et ligne de commandeSFTP (Secure File Transfer Protocol) vous donne un accès direct aux fichiers de votre site sur le serveur.…Certificats SSL et HTTPSCet article explique ce qu'est le SSL en termes simples, comment KapsuleHost gère automatiquement le SSL pour vos sites, et que faire en cas de problème avec…Sites web : par où commencerComment fonctionne l'hébergement de sites web chez KapsuleHost, ce qui se trouve sur chaque onglet d'un site, et quel guide lire selon la tâche qui vous occupe.…Surveillance de la disponibilité du siteChaque site hébergé chez KapsuleHost est vérifié automatiquement toutes les 60 secondes, et l'onglet Disponibilité vous montre le résultat : statut actuel,…

Toujours bloqué ?

Demandez à Kora, qui connaît votre compte, ou contactez notre équipe.

Nous contacterContacter le support