La parole est aux speakers : Kévin Dunglas
Jusqu’au Forum PHP 2022, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !
La conférence
FrankenPHP, dans les entrailles de l'interpréteur PHP, de machines virtuelles et des threadsLors de l'AFUP Day, je vous ai présenté FrankenPHP, un SAPI experimental permettant d'embarquer notre langage préféré dans les serveurs web écrits en Go tels que Caddy ou le serveur web local de Symfony CLI. Ce talk revient sur le progrès effectués depuis l'AFUP Day, et sur les nouveaux problèmes rencontrés suite aux retours de la communauté. FrankenPHP utilise
Cependant, faire cohabiter le runtime de deux langages dans un seul process n'est pas chose aisée. Dans ce talk orienté programmation système, nous étudierons tous les pièges que nous avons du contourner pour réaliser ce synchrétisme particulier. Ca sera l'occasion de découvrir comment fonctionne l'interpréteur PHP, son mode ZTS, les threads systèmes et les green threads de Go, les signaux Unix ou encore les problèmes que peuvent poser les astuces utilisées par l'interpréteur PHP pour implémenter des fonctionnalités telles que le Note : il n'est pas nécessaire d'avoir vu le premier talk pour assister à celui ci. |
Ballroom ABCDEF - Grace Hopper 14/10/2022 14:40-15:20 |
Tes derniers projets (Mercure, Vulcain) sont tous écrits en Go, comme FrankenPHP. Est-ce le langage complémentaire à PHP ?
Grâce à son support natif de la concurrence (l’emblématique mot-clef « go ») et à sa bibliothèque standard très fournie en implémentation haute-performance des protocoles réseaux, Go permet de créer relativement facilement des services réseaux performants et sécurisés.
C’est pour ça que je l’ai utilisé pour réaliser les implémentations de référence de Mercure et de Vulcain. C’est aussi pour ça que ce langage est en train de devenir hégémonique en ce qui concerne l’infrastructure réseau et cloud : Docker, Kubernetes et Traefik sont également écrits en Go pour ne citer que quelques exemples connus.
Les implémentations de référence de Mercure et Vulcain peuvent être utilisés avec n’importe quel langage de programmation, mais comme ils respectent les standards et que PHP aussi, ces deux outils sont très faciles à utiliser depuis une application PHP : pour envoyer un message aux navigateurs via un hub Mercure (le composant écrit en Go), il suffit de lui envoyer une requête POST à l’aide de curl ou même de file_get_contents() ; pour ajouter le support de Vulcain à n’importe quelle app PHP, il suffit de positionner le reserve proxy écrit en Go devant le serveur web servant l’app PHP.
Concernant FrankenPHP, l’intégration va beaucoup plus loin. L’interpréteur PHP est écrit en C, et Go peut appeler (et être appelé depuis) du code C. L’idée principale de FrankenPHP est de pouvoir embarquer l’interpréteur PHP dans n’importe quel programme Go, et en particulier dans le toujours plus populaire serveur web Caddy, lui aussi écrit en Go.
Comme nous le découvrirons lors de la conférence, cela permet d’exposer les fonctionnalités puissantes de Go (et de Caddy) directement au code PHP.
Cela permet des usages novateurs comme distribuer des applications complètement autonomes (le code PHP est directement embarqué dans le binaire du serveur web), utiliser les bibliothèques optimisées écrites en Go (ex : cache) ou encore tirer partie des nouveautés bas niveau du standard HTTP qui sont quasi-impossibles à implémenter en l’état actuel des choses avec PHP FPM (ex : les Early Hints).
En bref, Go est parfait pour écrire des services réseaux (HTTP en particulier), et est compatible C. PHP permet d’écrire des applications web et est écrit en C, ces deux langages sont effectivement très complémentaires !
FrankenPHP a t-il un jour l’objectif de devenir un projet « production ready » ou est-il destiné à rester un « side-project » ?
L’objectif est clairement de le rendre production ready, et on s’en approche à grands pas !
Tu es un speaker confirmé et un habitué des évènements AFUP, qu’est-ce qui rend l’exercice toujours intéressant après autant de fois pour toi ?
C’est un moment unique qui permet d’échanger avec la communauté et d’avoir des retours de qualité sur des concepts nouveaux. Et puis je dois avouer que ça me motive et que ça me donne une deadline pour finaliser des projets… comme FrankenPHP ! J’ai toujours hâte de pouvoir présenter des nouveaux projets au Forum PHP.
Une conférence présentée par
Kévin DUNGLAS |
Kévin est le créateur du framework API Platform ainsi que des projets Mercure et Vulcain. Il est également membre de la Core Team Symfony et a cofondé la société autogérée Les-Tilleuls.coop. |
Autres interviews
- La parole est aux speakers : Thibault Richard
- La parole est aux speakers : Benjamin Rambaud
- La parole est aux speakers : Sarah Haïm-Lubczanski
- La parole est aux speakers : Stéphane Hulard
- La parole est aux speakers : George Banyard
- La parole est aux speakers : Nicolas Grekas
- La parole est aux speakers : Jean-François Lépine
- La parole est aux speakers : Hélène Maître-Marchois et Mathieu Marchois
- La parole est aux speakers : Bastien JAILLOT
- La parole est aux speakers : Mathias Arlaud
- La parole est aux speakers : Amélie Abdallah
- La parole est aux speakers : Anaïs Sparesotto et Hortense Mahon
- La parole est aux speakers : Benoit Viguier
- La parole est aux speakers : Olivier Mansour et Valentin Claras
- La parole est aux speakers : Sebastian Bergmann et Roman Pronskiy
- La parole est aux speakers : Laurent Brunet
- La parole est aux speakers : Pierre Pelisset
- La parole est aux speakers : Loïc Fremont
- La parole est aux speakers : Stéphane Bortzmeyer
- La parole est aux speakers : Tomáš Votruba
- La parole est aux speakers : Pierre Tondereau
- La parole est aux speakers : Louis Pouzin
- La parole est aux speakers : Loïck Piera