Table de planification (cron)

Cron est un programme disponible sur les systèmes d’exploitation basés sur Unix qui permet aux utilisateurs d’exécuter des commandes et des scripts à des intervales particuliers ou à des heures spécifiques.

Le gestionnaire de cron d’Elgg permet aux administrateurs et aux développeurs de plugins de mettre en place des tâches qui ont besoin d’être exécutées à des intervalles définis.

Les exemples les plus courants de tâches cron dans Elgg incluent :

  • l’envoi des notifications en file d’attente

  • la rotation des journaux système dans la base de données

  • le nettoyage des déchets dans la base de données (le compactage de la base de données en supprimant les entrées qui ne sont plus requises - ou garbage collector)

Les plugins peuvent ajouter des tâches en enregistrant un gestionnaire de hook plugin pour l’un des intervalles de cron suivants :

  • minute - Exécuté toutes les minutes

  • fiveminute - Exécuté toutes les 5 minutes

  • fifteenmin - Exécuté toutes les 15 minutes

  • halfhour - Exécuté toutes les 30 minutes

  • hourly - Exécuté toutes les heures

  • daily - Exécuté tous les jours

  • weekly - Exécuté toutes les semaines

  • monthly - Exécuté tous les mois

  • yearly - Exécuté tous les ans

Note

reboot est devenu obsolète et ne devrait plus être utilisé

Comment ça marche ?

Elgg active son gestionnaire de cron quand certaines pages spécifiques au cron sont chargées. A titre d’exemple, charger http://example.com/cron/hourly/ dans un navigateur web active le hook horaire (« hourly »). Pour automatiser ceci, des tâches cron sont définies pour atteindre ces pages à certaines heures. Ceci est fait en configurant un crontab qui est un fichier de configuration qui détermine ce que font les tâches cron et à quel intervale.

Installation

Le crontab a besoin de spécifier un script ou une commande qui va atteindre les pages cron d’Elgg. GET et wget sont deux programmes habituellement disponibles pour cela. Vous aurez besoin de déterminer l’emplacement de l’un d’entre eux sur votre serveur. Votre crontab a également besoin que l’adresse de votre site web soit spécifiée.

# Crontab example.
#
# This file is an example of triggering Elgg cron events. It hits a URL to
# trigger the events. For testing, you can simulate the cronjob by loading the
# URL in a browser.
#
# See http://learn.elgg.org/en/stable/admin/cron.html for more information
#

# Location of your site (don't forget the trailing slash!)
ELGG='http://www.example.com/'

# Location of lwp-request
LWPR='/usr/bin/lwp-request'

# Make GET request and discard content
GET="$LWPR -m GET -d"

# The crontab
# Don't edit below this line unless you know what you are doing
* * * * * $GET ${ELGG}cron/minute/
*/5 * * * * $GET ${ELGG}cron/fiveminute/
15,30,45,59 * * * * $GET ${ELGG}cron/fifteenmin/
30,59 * * * * $GET ${ELGG}cron/halfhour/
@hourly $GET ${ELGG}cron/hourly/
@daily $GET ${ELGG}cron/daily/
@weekly $GET ${ELGG}cron/weekly/
@monthly $GET ${ELGG}cron/monthly/
@yearly $GET ${ELGG}cron/yearly/
# reboot is deprecated and probably doesn't work
@reboot $GET ${ELGG}cron/reboot/

Dans l’exemple ci-dessus, changez les variables ELGG et GET pour correspondre à la configuration de votre serveur. Si vous avez un accès SSH à vos serveurs Linux, saisissez crontab -e et ajoutez votre configuration crontab. Si vous avez déjà un crontab configuré, vous devrez fusionner les informations pour Elgg dedans. Si vous n’avez pas d’accès SSH, vous devrez utiliser un outil de configuration web. Ceci va dépendre de votre fournisseur d’hébergement.

Si vous choisissez l’utilitaire wget, vous pourriez vouloir utiliser ces drapeaux :

  • --output-document ou -O pour spécifier l’emplacement du fichier de sortie concaténé. Par exemple, sous Debian: /usr/bin/wget --output-document=/dev/null. Si vous ne faites pas cela, un nouveau fichier sera créé pour chaque chargement de la page du cron dans le répertoire personnel de l’utilisateur du cron.

  • --spider pour éviter que la page du cron soit téléchargée.

Sur les serveurs Windows, il y a plusieurs émulateurs de cron disponibles.

Pour des informations sur comment mettre en place des tâches cron en utilisant cPanel, voyez cPanel Docs.

Dans le champ command, indiquez  le lien correspondant de la page de cron. Par exemple, pour une tâche cron hebdomadaire, entrez la commande comme http://www.example.com/cron/weekly/.

Pour voir si vos tâches cron sont exécutées, visitez Statistiques > Cron dans votre panneau d’administration Elgg.