Nous étions il y a quelques semaines à l’événement PHP de l’année qui se déroulait à Disneyland dans l’Hôtel Marvel : la 23ᵉ édition du Forum PHP 2022 ! Cet événement, organisé chaque année par l’AFUP, est l’occasion pour tous les participants de se retrouver autour de thématiques centrées sur l’écosystème PHP.
Pour la première fois, le Forum PHP est organisé en dehors des portes de la capitale, mais non loin de là : à Disneyland Paris (Marne-la-Vallée). Le programme de cette année était particulièrement riche, avec au programme des mathématiques, du réseau, des innovations, de la sécurité. Des sujets passionnants pour ces deux journées, en plus de belles rencontres.
De l’humain à l’ordinateur, ou découvrir le sens d’un texte avec ElasticSearch
Mathias Arlaud de chez Les Tilleuls commence son talk en nous affichant deux phrases qui se ressemblent pour un humain, mais interprétées complètement différemment par une machine, puisqu’elles traitent de l’hexadécimal.
Nous voyons par la suite que pour chaque terme recherché, ElasticSearch utilise la pondération afin de retourner les résultats sous forme de pertinence. Pour pondérer efficacement les résultats, ElasticSearch s’appuie sur une équation okapi.
En résumé, le nombre d’occurrences des mots, le poids qu’ils ont, ont une importance dans la pondération des résultats. À savoir qu’il faudra, avec l’aide de librairies (analyzers, stemming) affiner le rendu du résultat.
Comprenez comment PHP fonctionne, vos applications marcheront mieux
Pascal MARTIN de chez BedRock commence sa conférence par un retour dans le passé de PHP. Il rappelle que depuis la version PHP 5.3 et l’arrivée de « composer », le langage s’est considérablement professionnalisé.
Pascal enchaîne en parlant de PHP-fpm, qui est le SAPI le plus évolué, puis compare Nginx et Apache. Il explique ensuite que le langage consomme des ressources (CPU / RAM, bande passante, espace disque, IO, BDD, Redis…), même si l’allocation mémoire n’est pas gérée avec PHP. Il est donc indispensable de se soucier des ressources que nous consommons ! Afin d’optimiser la mémoire PHP et étant donné que nous n’avons pas à la gérer, l’extension Zend Memory Manager se charge complètement de sa gestion.
Pascal décrit ensuite les problématiques que nous pouvons rencontrer avec le langage, telles que les performances, la consommation des ressources… Pour cela, il nous donne des pistes d’amélioration :
- Limiter le nombre d’extensions utilisées ;
- Penser au timeout (faire en sorte qu’il soit le plus court possible) ;
- Configurer l’OPCache (inclut depuis PHP5.5) et analyser ses métriques d’utilisation.
L’un des inconvénients de PHP à contourner est l’absence de multi-thread.
La conclusion de ce talk est que nous avons fort à faire pour avoir des applications PHP optimisées. Il est indispensable de travailler de concert entre dev et ops. N’oublions pas également que le PHP à une approche shared-nothing !
Back to the Sylius future
Loïc FRÉMONT de Akawaka, est contributeur régulier de Sylius et créateur de Monofony, un micro-framework Symfony utilisant les packages de Sylius.
Il nous partage sa volonté de réduire les dépendances externes pour Sylius et favoriser les composants natifs Symfony, afin de faciliter les montées en version du framework.
Loïc nous annonce une excellente nouvelle dès le début de sa conférence : Sylius est compatible avec Symfony 6 depuis la semaine du 13 octobre 2022 !
Quelques dépendances qu’il souhaiterait réduire :
- Fixtures : Sylius/fixtures-bundle → zenstruck/foundry
- State machine : Wizou/state-machine → symfony/workflow
- Behat Chrome driver : dmore/chrome-driver-extension → symfony/panther
Un autre point important est la volonté de déprécier l’utilisation du ResourceController. Les objectifs sont clairs :
- Plus de flexibilité
- Détacher les ressources de doctrine
- Support des DTOs
- Support du DDD
- Faciliter la prise en main des développeurs Symfony
La version 3 de API Platform a été brainstormée avec les équipes de Sylius pour merger l’API de Sylius et celle d’API Platform. D’ailleurs, le brainstorming a donné naissance aux évolutions ci-dessous de l’API plateforme :
- Kernel events
- State provider
- State processor
- input & output.
FFI = Foreign Function Interface
Pierre PELISSET nous présente dans sa conférence une extension PHP permettant d’exécuter du code C directement depuis PHP. Il est également possible d’exécuter d’autre langage comment le GO, Rust, Python, etc.
Cette extension PHP nous permet de faire des choses normalement plus compliquées à faire nativement en PHP. Voici quelques exemples d’utilisation :
- Binding d’une librairie sans passer par une extension ;
- Optimisation des performances d’une fonctionnalité via du code natif (ex : traitement d’image) ;
- Accès aux fonctions du système : en PHP de base, on a accès à quelques fonctions système, mais tout n’est pas disponible.
Pierre a utilisé cette librairie pour implémenter pySerial, qui est une librairie Python, permettant de gérer facilement la communication via USB des machines depuis son application PHP. S’il y a de nombreux avantages à utiliser cette librairie, il y a aussi des inconvénients hérités directement du C, comme la gestion de la mémoire. Attention également, car le code varie en fonction de l’environnement : Linux, Darwin MacOS.
Pierre termine sa conférence en nous présentant son package sur github : https://github.com/ppelisset/php-serial
Une plongée dans Node depuis PHP
Matthieu Napoli, créateur du framework serverless php Bref, nous parle de son expérience de Node afin de voir les avantages et les inconvénients des deux langages.
Trois grands points ressortent de cette conférence :
- L’utilisation de l’asynchrone qui est au cœur du design fondamental de Node contrairement à PHP. En effet, Node utilise l’event loop et alterne les processus au niveau du langage, alors que PHP, lui, est multiprocessing. En bref, pour Node si un process bloque, tout bloque ! Il faut donc penser la structure du code différemment.
- La simplicité de structure de Node ! Tout est variable, que ce soit un attribut, une fonction, une classe, nous pouvons tout modifier à la volée après instanciation.
- Le troisième point n’est pas spécifique à Node, mais concerne TypeScript. Il le compare aux interfaces en PHP.
Enfin, Matthieu termine avec une question qui fait débat : « Faudrait-il remplacer l’injection de dépendance par les facades dans PHP ? »
Cette conférence avait principalement pour but d’ouvrir les esprits de tous sur d’autres paradigmes et pourquoi ne pas envisager de coder différemment.
Conclusion
Nous souhaitons remercier les différents intervenants, pour ces premières conférences, toutes plus intéressantes les unes que les autres ! Vous trouverez très prochainement un deuxième article sur notre blog, pour vous parler des autres conférences auxquelles nous avons assisté durant le Forum PHP.