Les projets PHP ont beaucoup évolués avec le temps et on gère de plus en plus de cas d'usages.

On est maintenant coutumier de gérer des tâches lourdes, ou longues, dans nos projets. La solution est souvent la même : l'utilisation de systèmes de queues (tel que RabbitMQ) pour les traiter en tâche de fond.

La partie technique est un sujet maintenant bien maitrisé. Mais la partie logique nous expose encore à toute une série de problèmes :

sous-utilisation des ressources, comment faire en sorte que les workers ne passent pas la majorité de leur temps à attendre que d'autres actions finissent,
gestion de la priorité, comment faire en sorte qu'une tâche ne monopolise pas tous les workers,
gestion de la concurrence, comment faire en sorte que les workers ne se marchent pas sur les pieds.

On reste confronté à ces problèmes car on perpétue les modèles de programmation qu'on a toujours connus en PHP, à savoir la programmation synchrone.

Mais le reste de l'industrie y est confronté depuis un moment et y a répondu. La réponse se trouve dans un paradigme inventé il y a plus de 50 ans : l'Actor Model. Une approche de la programmation concurrentielle.

C'est un modèle très peu connu dans le monde PHP et pourtant vous l'utilisez probablement déjà indirectement à titre personnel ou professionnel. En effet c'est le modèle à la base de WhatsApp et RabbitMQ. On le retrouve aussi dans les serveurs de jeux multijoueurs.

Dans cette conférence nous verrons, à travers un exemple concret d'un crawler, l'expression de ces problèmes. Nous aborderons les fondements de l'Actor Model et comment ils solutionnent nos problèmes. Pour finir nous verrons l'avancement des travaux qui permettent d'utiliser ce modèle en PHP.

Comments

Comments are closed.