Dans cette vidéo découvre comment faire de l’asynchrone avec Symfony (Messenger + RabbitMQ).
Je t’explique comment dissocier et déléguer certains traitements PHP au worker RabbitMQ. Un worker est en attente de messages (scripts) à exécuter.
Il est ainsi possible de lui envoyer différents scripts à exécuter en dehors du script principal. De cette manière, il n’y a pas besoin d’attendre la fin des instructions passées au worker pour continuer à exécuter le reste du script PHP principal
L’asynchrone est très pratique dans différentes circonstances : traitements lourds, log, traitement en base de données, …
Un exemple pour que tu comprennes mieux :
Paul est en train de remplir un formulaire sur un site web. Une fois terminé, les informations de ce formulaires seront transformées en PDF puis envoyé à Paul par email.
La génération du PDF et l’envoie d’email sont des traitements qui peuvent prendre du temps.
Une fois que Paul a fini de remplir le formulaire, il l’enregistre et instantanément, il a un message d’information lui indiquant que ses informations ont bien été enregistrées et qu’il recevra le PDF par mail d’ici quelques instants.
En parallèle, le serveur (PHP) a envoyé au worker l’instruction de générer le PDF puis d’envoyer l’email à Paul, ce qui a permis d’afficher le message d’information instantanement à Paul, sans qu’il n’est à attendre la fin de la génération du PDF et l’envoi de l’email.
Ces instructions sont stockées dans une file d’attente (queue) puis traitées au fil de l’eau.
Quelques instants après Paul reçoit son email avec le PDF en pièce jointe.

Symfony et Messenger
Grâce à Symfony et Messenger, le bundle utilisé pour faire de l’asynchrone, il est très facile d’envoyer des messages (script) à un worker pour qu’il traite les instructions.
Dans cette vidéo, je t’explique comment mettre en place Messenger, créer des messages, et comment les traiter de manière asynchrone.
Bon visionnage ! 🙂