How to, tutoriels et conseils pratiques

Cet article a pour but d’expliquer aux non informaticiens ce qu’est une tâche cron, aussi si vous savez de quoi je parle, inutile de lire cet article car vous n’apprendrez rien !

Le principe et l’intérêt des tâches cron

Ancêtre de tâche cron ?

Une tâche cron est un programme qui est déclenché à une heure précise automatiquement par le serveur, c’est donc l’équivalent des tâches planifiées Windows pour les serveurs web.

Exemples de tâches planifiées : déclencher l’anti virus tous les Lundis à 12h, effectuer une sauvegarde toutes les nuits à 1h, ou envoyer un email de rappel tous les 1er du mois.

L’intérêt de la tâche cron est donc le déclenchement automatique d’une action généralement périodique, et ce sans perturber le site web en lui même.

 

Reprenons l’exemple de l’envoi d’un email de rappel tous les 1er du mois à une base de 500 contacts. Il serait possible pour le serveur de vérifier, à chaque affichage d’une page web, si nous sommes le 1er du mois. Lorsque nous sommes effectivement le 1er du mois et que les emails n’ont pas encore été envoyés, le serveur enverrait les 500 emails et afficherait la page.

Mais quel gâchis de performance : pendant 30 jours, l’affichage des pages va être (légèrement) ralenti par la vérification de la date, puis très fortement lorsqu’il faut envoyer les 500 emails.

Ainsi, les développeurs ont recours à des tâches planifiés par soucis de performance.

Pour info, le terme cron vient du nom du programme qui permet de déclencher les tâches planifiées sur Linux/Unix (Wikipedia).

J’ai compris, mais comment programmer une tache planifiée sur mon serveur ?

Malheureusement, cela dépend de votre hébergement ! Dédié ou mutualisé, ainsi que les services offerts par votre hébergeur.

1 – Localiser le programme à déclencher

Tout d’abord, vous aurez besoin de connaître le programme à déclencher, et plus précisément son URI (ou URL).

Suivant le fonctionnement du planificateur de tâche de votre serveur, vous aurez besoin de :

  • URI = chemin sur le serveur vers la tâche à déclencher. L’URI ne commence pas par http://. Exemple d’URI :  /home/www/modules/monmodule/cron-script.php.

Plus rarement, le planificateur de tâche utilise l’URL :

  •  URL = l’adresse de la page, qui commence par http://, exemple : http://www.monsite.com/modules/monmodule/cron-script.php.

En général, ces infos vous sont fournies par l’éditeur du programme que vous avez besoin de planifier.

2 – Ajouter le programme dans le planificateur (crontab)

Les hébergeurs « industriels » vous mettent généralement à disposition une interface de gestion de serveur, qui intègre la possibilité de programmer des taches cron. Dans la négative, vous êtes obligés de vous adresser à votre webmaster.

OVH : interface simple. Dans votre manager suivez « Hébergement » et « Tâche planifiées ». Voir le guide.

Gandi : vous devez ajouter une ligne de commande dans un fichier. Voir le guide.

1&1 : vous devez exécuter une ligne de commande. Voir le guide.

3 – Vérifier la bonne exécution

Héhé, c’est certainement la partie la plus complexe : comment savoir si votre cron fonctionne ? Par exemple, si vous ne recevez pas un email que votre tâche planifiée est censée envoyer, comment savoir si le problème est du à la non exécution du cron ou au php qui ne fonctionne pas.

Encore une fois, cela va dépendre de votre hébergement.

Chez OVH, vous pouvez recevoir un email à chaque exécution de la tâche cron (10 première exécutions).

Chez Gandi, vous avez accès à un journal contenant toutes les tâches cron (Administration de votre instance > Crons > Logs).

Certains modules intègrent un journal qui indique les dates des dernières exécutions, par exemple :

Si vous êtes sûr que votre tâche s’exécute effectivement suivant la planification souhaitée, mais que le résultat attendu ne se produit pas, il est vraisemblable que le problème se situe dans le module, à voir avec son vendeur !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


La période de vérification reCAPTCHA a expiré. Veuillez recharger la page.