Chaque mois, vous effectuez des gros traitements, et vous ne vous êtes jamais demandé si l’expérience utilisateur méritait d’être amélioré. Suivant les cas, il peut être très intéressant de les modifier légèrement, et de les faire traités par un ordonnanceur. Voyons ensemble pourquoi.
Le cron:
Le cron est une tâche planifiée sous Linux. Vous déclarez une heure où votre page PHP doit s’exécuter et ca fonctionnera très bien. C’est la méthode la plus connue. Pour plus de détails, voyez le manuel.
Un ordonnanceur:
Un ordonnanceur est un programme qui va exécuter des traitements via un système de file d’attente. Sous Linux, on citera supervisor ou RabitMQ.
Pour installer le premier, suivez le tutoriel disponible sous Laravel.
Comment choisir lequel utiliser:
Vous avez une tâche qui prend du temps, et vous devez indiquer à l’utilisateur qu’elle s’est bien lancée. Si vous la lancez lors de la validation de formulaire, vous devrez le faire patienter jusqu’à ce qu’elle soit terminée. L’ordonnanceur est votre meilleure option. Vous créez un job que vous placez en file d’attente, et l’ordonnanceur s’occupera de le lancer dès que possible. Coté utilisateur, vous pouvez lui afficher que le traitement va bientôt arriver.
Vous avez une tâche qui est périodique et qui ne nécessite pas de clic d’utilisateur: utilisez le cron.
Enfin, vous avez une tâche qui peut être lancée manuellement et périodiquement.
Là, il faut être malin. Sous Laravel, ce que je fais, c’est de créer un job qui va exécuter ma tâche après un clic de l’utilisateur.
Et dans mon fichier appelé par le cron, je fais exactement la même chose. Dans les 2 cas, la tâche s’exécute, et l’utilisateur est prévenu par email lorsqu’elle est terminée.