Drupal et les tâches planifiées

Drupal et les tâches planifiées

14 Feb 2012 |  Drupal

Pour exécuter des tâches récurrentes et automatisées, il existe un utilitaire commun à toutes les distributions Unix nommé Cron. Cet outil est vraiment pratique puisqu’il permet l’exécution d’un script à un moment précis. Vous pouvez par exemple lancer un script toutes les 5 minutes ou encore tous les lundi à 21h, les possibilités sont immenses.

Pour bien comprendre comment cela fonctionne je vous invite à lire la doc disponible sur wikipedia

Exécuter la cron de Drupal 7

Pour les versions antérieurs à Drupal 7 il était simple de l’exécuter, il suffisait simplement d’accéder à l’url exemple.fr/cron.php pour lancer le déclenchement. Depuis Drupal 7 il est nécessaire d’ajouter un paramètre supplémentaire à l’adresse, à savoir “cron_key”. Cette option n’est autre qu’un token unique d’authentification qui permet de ne restreindre le déclenchement du service Cron qu’à ceux qui possède cette clé.

Si comme moi vous avez cherché où pouvait bien se trouver cette clé, sachez que pour la récupérer il suffit de se rendre sur le tableau de bord d’administration du site à l’adresse “admin/reports/status”. Vous trouverez une ligne, dans le tableau de votre site, dédiée au Cron, vous indiquant la dernière date à laquelle le service a été exécuté ainsi que l’url pour l’exécuter et c’est cette url que vous devez récupérer.

Vous pouvez déclencher le Cron directement depuis votre navigateur en collant cette adresse ou via un script en accédant à cette adresse grâce à la commande wget.

0 2 * * * wget -O - -q -t 1 http://exemple.com/cron.php?cron_key=obwzqaAADCi-POSvSnVX3LayhESdCy7Dsdw4DQsYr

Exécuter la cron Drupal 7 chez OVH

J’ai découvert il y a peu qu’OVH proposait la possibilité aux hébergements mutualisés d’utiliser le service de Cron du serveur pour déclencher des tâches plannifiées.

Pour configurer celui-ci, rendez-vous dans l’interface d’administration de votre manager OVH et cliquez sur le Planificateur de tâches.

Comme vous pouvez le constater, il faut spécifier le chemin d’un fichier qui contiendra nos scripts d’exécution. Dans mon cas, j’ai créé un fichier à la racine de mon serveur nommé cronscript.php dans lequel j’ai ajouté le code suivant afin de déclencher les tâches plannifiées de Drupal.

system('/usr/bin/wget -O - -q http://www.exemple.comain.com/cron.php?cron_key=rGcinK08iqoZq-XyL2DibY...')

Du coup, dans l’interface de manager OVH, il ne vous reste plus qu’à spécifier le chemin de votre fichier (/www/cronscript.php pour moi) et à définir la périodicité à laquelle il doit être lancé.

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi