# Crons

## La commande `ot:cron`

Les taches planifiées (crons) sont exécutées au moyen de la commande suivante, où jobs est le nom du job 
à effectuer (ou une liste de noms de séparés par des virgules): 

    bin/console ot:cron run <jobs>

Pour lister les jobs disponibles : 

    bin/console ot:cron list

Pour plus d'informations : 

    bin/console ot:cron --help

> À noter : tous les jobs implémentent une méthode preview qui peut être exécutée en passant l'option -p, --preview 
> à la commande.

## Créer un nouveau job

Pour ajouter une nouvelle tâche exécutable, créer simplement une nouvelle classe dans le répertoire src/Service/Cron/Job. 
Cette classe doit hériter de \App\Service\Cron\BaseCronJob.

Le nom du job sera déduit du nom de ce nouvel objet (`MyCron` deviendra `my-cron`)

Cette classe devra implémenter les méthodes `preview` et `execute` telles que définies dans 
l'interface \App\Service\Cron\CronjobInterface.

La commande `ot:cron` s'occupera pour vous de :

* locker le process pour interdire l'exécution simultanée de deux jobs du même nom
* mesurer les temps d'exécution
* assurer la gestion d'erreur du job
* le logging et l'envoi d'un mail en cas d'erreur critique
* le retour d'une valeur de succès ou d'erreur selon le résultat du job
