Le planificateur de tâches de Joomla! peut être lancé de trois façons :
- Planificateur paresseux (Lazy) : par les visites sur votre site.
- Web Cron : une tâche cron qui appelle un lien vers votre site.
- Ligne de commande : une tâche cron sur le propre serveur de votre site qui démarre Joomla! directement.
N'utilisez qu'un seul d'entre eux à la fois. Le planificateur paresseux et le Web Cron s'activent et se désactivent dans Système > Tâches planifiées > Paramètres ; la ligne de commande n'a besoin d'aucune activation.

Le planificateur paresseux (Lazy Scheduler)
La planification paresseuse repose sur l'activité de votre site : quelqu'un parcourant des pages en façade ou travaillant en Administration. Pendant que Joomla! traite une telle visite, il exécute également les tâches qui sont dues. Cela peut rendre le site un peu plus lent pour ce visiteur.
Le planificateur paresseux ne garantit pas que les tâches s'exécutent à l'heure prévue : sur un site peu fréquenté, rien ne s'exécute. Mais il est activé par défaut et ne nécessite aucune configuration. Si vous avez des tâches qui doivent s'exécuter à des moments précis, par exemple avec une expression Cron, utilisez le Web Cron ou la ligne de commande.
Le planificateur Web Cron
Le Web Cron nécessite une tâche cron : dans le panneau de contrôle de votre hébergement, ou auprès d'un service cron externe. Lorsque vous activez le Web Cron, Joomla! crée pour vous un lien Webcron. La tâche cron appelle ce lien, ce qui déclenche le planificateur de tâches. Généralement, la tâche cron utilise curl. Cette commande exécute le planificateur sur mysite.com :
curl --request GET 'https://mysite.com/component/ajax/?plugin=RunSchedulerWebcron&group=system&format=json&hash=auto-generated-hash'
La capture d'écran ci-dessous montre une configuration type de tâche cron dans un panneau de contrôle d'hébergement (ceci ne fait pas partie de l'Administration Joomla!). Faites exécuter la tâche cron chaque minute pour donner au planificateur de tâches une précision à la minute près. Vous pouvez l'exécuter moins souvent : les tâches s'exécuteront alors moins précisément à l'heure, mais votre site effectuera un peu moins de travail.

Une fois la tâche cron configurée, désactivez le planificateur paresseux et activez le Web Cron. Si les deux sont activés, les deux exécutent des tâches, et le planificateur paresseux peut encore ralentir les visites de temps en temps.
La ligne de commande : Web Cron sans le lien
Si la tâche cron s'exécute sur le même serveur que votre site, elle n'a pas besoin du lien. Elle peut démarrer directement le planificateur de Joomla!, avec l'outil en ligne de commande propre à Joomla! :
php /path/to/your/site/cli/joomla.php scheduler:run
Ceci fait la même chose que d'appeler le lien Webcron : cela exécute la prochaine tâche qui est due. Ajouter --all pour exécuter toutes les tâches dues en une seule fois. La procédure pas à pas pour configurer cela se trouve dans Exécuter les tâches depuis la ligne de commande.
Lien ou commande ?
Appeler le lien Webcron
Avantages :
- Cela fonctionne depuis n'importe où. La tâche cron peut s'exécuter sur un autre serveur ou via un service cron externe. Cela aide lorsque votre hébergement ne propose pas de tâches cron, ou seulement des tâches cron qui appellent une URL.
- Les tâches s'exécutent comme une page de votre site : avec la version PHP et l'utilisateur de votre site web.
- Pas de chevauchement. Une tâche n'est pas démarrée tant qu'une autre tâche est encore en cours d'exécution.
Mises en garde :
- Le lien contient une clé secrète (le hash) : toute personne qui possède le lien peut démarrer vos tâches. Gardez-le privé. S'il est divulgué, utilisez Réinitialiser la clé d'accès dans les Paramètres des tâches planifiées et mettez à jour votre tâche cron.
- Limites de temps. Le serveur web ou l'hébergement peut arrêter une requête après une minute ou deux, ce qui interrompt les tâches longues.
- Votre site doit être accessible pour la tâche cron, et chaque appel est une visite que votre site doit traiter.
Exécuter la commande
Avantages :
- Pas de limites de temps. Une tâche s'exécute aussi longtemps que nécessaire : le meilleur choix pour les tâches longues.
- Pas de secret, rien d'ouvert vers l'extérieur. Seule une personne capable d'exécuter des commandes sur le serveur peut la démarrer.
Mises en garde :
- Cela fonctionne uniquement sur le même serveur, et seulement si votre hébergement vous permet d'exécuter des commandes dans une tâche cron, et pas seulement d'appeler des URL.
- La version PHP. La ligne de commande peut utiliser une autre version de PHP que votre site web. Indiquez le chemin complet vers une version de PHP que votre Joomla supporte (PHP 8.3 ou ultérieur pour Joomla 6), par exemple
/usr/bin/php8.3; votre hébergeur peut vous indiquer le chemin. - L'utilisateur. La commande s'exécute en tant qu'utilisateur de la tâche cron. Si ce n'est pas l'utilisateur de votre site web, les fichiers qu'une tâche écrit peuvent se retrouver avec le mauvais propriétaire.
- Un chevauchement est possible. La commande ne vérifie pas si une tâche est encore en cours d'exécution depuis une tâche cron précédente. Si une tâche peut prendre plus de temps que l'intervalle de votre tâche cron, assurez-vous que deux exécutions simultanées ne causent aucun dommage, ou exécutez cette tâche moins souvent.