Depuis très longtemps, en tant que développeur PHP, je me demande s'il est possible de faire du multi-tâche en PHP. Il s'avère que la réponse à cette question n'est pas aussi simple que ce que l'on peut croire. En effet, répondre catégoriquement "non" à cette question peut sembler correct car PHP n'a pas été conçu comme un langage permettant de lancer des traitement en parallèle. Mais que diriez-vous si je vous démontrais que l'on peut finalement arriver assez facilement à faire des traitements multi-tâches en PHP et ainsi simuler une sorte d'asynchronisme ? Facile ! Me direz-vous, aujourd'hui nous avons tout un tas de logiciels et librairies à notre disposition pour le faire :
* AMQP,
* ReactPHP,
* Les sous-processus,
* PThread,
* ...
Et je répondrais que la majorité de ces solutions ne sont pas si simples à mettre en oeuvre que ce qu'on pense. Par contre, les générateurs, eux, sont intégrés nativement à PHP, ne nécessitent aucune extension ou infrastructure et peuvent nous permettre d'arriver à un résultat qui peut être, dans certains cas, satisfaisant.
#php #phptour #afup
## Liens
* async-interop/awaitable : https://github.com/async-interop/awaitable
* jubianchi/async-generator : https://github.com/jubianchi/async-generator
* Cooperative multitasking using coroutines (in PHP!) : https://nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html