Cron

Qu’est-ce que ça fait ?

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 intervalles définis ou à des heures précises.

Le gestionnaire de cron de 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 - garbage collector - dans la base de données (compactage de la base de données par la suppression des entrées qui ne sont plus requises)

Les plugins peuvent ajouter des tâches en enregistrant un gestionnaire d’événement pour l’un des intervalles 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

elgg_register_event_handler('cron', 'hourly', function() {

   $events = my_plugin_get_upcoming_events();

   foreach ($events as $event) {
      $attendees = $event->getAttendees();

      // notify
   }
});

Comment ça marche ?

crontab doit être configuré de manière à activer le gestionnaire cron Elgg toutes les minutes ou à un intervalle spécifique. Une fois que l’entrée cron active la tâche cron, Elgg exécute tous les gestionnaires d’événements attachés à cet intervalle.

Si vous avez un accès SSH à vos serveurs Linux, tapez crontab -e et ajoutez votre configuration crontab.

* * * * * path/to/phpbin path/to/elgg/elgg-cli cron -q

La commande suivante va s’exécuter chaque minute et activer toutes les tâches du cron attendues.

Facultativement, vous pouvez activer les gestionnaire pour un intervalle spécifique :

0 * * * * path/to/phpbin path/to/elgg/elgg-cli cron -i hourly -q