Mathieu Desnouveaux

Performance

13 sketchnotes disponibles pour ce thème

🚀

Optimisation et performance

Sketchnote illustrant FrankenPHP et ses fonctionnalités avancées présentée au Forum PHP 2025. Le schéma montre que FrankenPHP est un moteur d'exécution PHP, supporte PDP PHP Foundation, et simplifie le déploiement et le packaging d'application. Six features principales sont présentées: 103 Early Hints (permet de préciser rapidement quoi prétélécharger, accélère la récupération des assets), Mercure (envoi de messages aux clients, notification simple), Binaire Static (package Franken, Caddy et le code source pour des déploiements simples), Worker Mode (garde en mémoire l'application, optimise considérablement les performances), Go Extension (simplifie le développement d'extension PHP, directement en Go), et Go Worker (permet d'exécuter du code en arrière plan Pargo avec gRPC dans FrankenPHP, Web Socket, FrankenPHP Queue).

FrankenPHP en dehors des sentiers battus

Publié le 30 novembre 2025
Par Kevin Dunglas
🐘 PHP 🚀 Performance 🛠️ Tools
📅 Forum PHP
Sketchnote illustrant les principes SOLID et l'injection de dépendances pour la performance au Forum PHP 2025. Le schéma montre les 5 principes SOLID (S-Responsabilité unique n'avoir qu'une seule raison de changer, O-Ouvert/Fermé ouvert à l'extension fermé à la modification on peut empiler des couches sans tout changer, L-Substitution de Liskov permet d'utiliser n'importe quelle classe fille, I-Ségrégation des interfaces réduit les interfaces et évite le couplage, D-Inversion de dépendance dépendre d'abstraction). Deux moments d'utilisation: 1-Au build (chercher les implémentations, ajout dans un fichier PHP), 2-Au runtime (on utilise le fichier). Extensions via décorateur (compiler pass) ou un attribut. L'injection de dépendance utilise les attributs pour identifier, configurer et décorer les dépendances. Pour résoudre des problèmes de perf, la solution est Lazyness avec un paresseux qui dit 'voir les détails dans la doc'.

PERF & Injection de dépendance - Êtes-vous assez paresseux-ses

Publié le 30 novembre 2025
Par Nicolas Grekas
🐘 PHP 🏗️ Architecture 🚀 Performance
📅 Forum PHP
Sketchnote illustrant 4 design patterns pour la résilience présentée au Forum PHP 2025. Le schéma commence par 'tout échoue tout le temps' avec le principe de réduire le blast radius et ne laisser pas un processus attendre pour rien. La corrélation entre les requêtes est expliquée (tout le monde en même temps mène à différer les requêtes et différer les retry). Quatre stratégies sont présentées: étaler les crons et multiplier les queues avec introduction de l'aléatoire (ampoule), constant work (engrenage - préparer les réponses avant de recevoir les requêtes), attention à la variabilité avec pic d'activité aléatoire et préparer les réponses, découper en cellules indépendantes (ciseaux), et shuffle sharding (dé - répartir aléatoirement les ressources).

4 design patterns avancés pour améliorer la résilience d'une application

Publié le 30 novembre 2025
Par Pascal Martin
🏗️ Architecture 🚀 Performance
📅 Forum PHP
Sketchnote illustrant comment gérer 180000 requêtes par seconde présentée au Forum PHP 2025. Le schéma montre la solution avec un laptop du marché + CURL (1996 dans PHP, depuis 2000). Deux stratégies principales: 1-Boucle de requêtes (en séquentiel, réutiliser la connexion) avec une ampoule indiquant l'idée, 2-Paralléliser les requêtes avec une alerte (busy looping pour attendre la fin d'une boucle). Le protocole HTTP/1.1 est expliqué avec client-serveur et plusieurs échanges pour une requête pour acquitter la requête. Le multiplexing montre une requête HTTP/2 parallèle. HTTP/3 arrive de QUIC avec UDP. La résolution DNS dans CURL montre multi-serveur (et repartissant les appels curl) puis mise en cache. Le multithread pour exploiter 100% du CPU mène à PCNTL et SCHTOP.

180 000 requêtes par seconde expliqué simplement

Publié le 30 novembre 2025
Par Xavier Leune
🚀 Performance 🐘 PHP
📅 Forum PHP
Sketchnote illustrant la défense de SQL face aux préjugés présentée au Forum PHP 2025. Le schéma montre l'accusation (complexité inutile, verbosité excessive, non moderne, performances douteuses) et la position d'avocat du SQL. La défense démontre que SQL est performant, élégant, moderne, efficace et simple, mais on l'apprend comme en 1992 et SQL a évolué, pas nous. Plusieurs cas sont présentés: l'affaire des 50000 UPDATE (PHP boucle foreach 50000 requête vs SQL 1 requête), l'enfer des sous-requêtes (solutionné avec des CTE vue temporaire nommée), le crime de la complexité (requête INSERT + requête SELECT returning donnant la norme), le cas du groupement d'info (requête ALL foreach vs Windows Function slice), et le problème pour chaque (requête ALL foreach vs requête latéral).

SQL vs les préjugés

Publié le 30 novembre 2025
Par Laeticia Avrot
📊 Data 🚀 Performance
📅 Forum PHP
Sketchnote détaillant la migration d'Apache vers FrankenPHP. La stack initiale montre plusieurs outils similaires (front/back) sans DevOps, simplifiant l'infra. Le choix radical: un conteneur pour tous avec Nginx pour HTTPS. L'idée: remplacer par FrankenPHP, présenté avec le crabe mascotte. La POC (Proof of Concept) est décrite comme 'aussi simple que changer le Dockerfile', automatisable et packageable. Les avantages incluent: par stack donc coûts non automatisables.

De Apache à FrankenPHP : simplifier notre infra sans douleur

Publié le 29 novembre 2025
Par Yoan Bernabeu
🐘 PHP 🚀 Performance 🔧 DevOps
📅 API Platform Conference
Sketchnote présentant l'intégration de Redis avec API Platform. Le schéma illustre l'object mapping pour convertir des objets vers des formats partageables, Redis comme base de données clé-valeur (RAM vers performance, string vers JSON hash). Une balance compare les avantages (format objet proche, performance) et inconvénients (mapping à faire, sécurité des données, persistance). RedisOM est présenté comme solution avec attributs pour le mapping, persistence à la Doctrine, et requêtes via Redis Search.

API Platform × Redis

Publié le 29 novembre 2025
Par Clément Talleu
🔗 API 🚀 Performance 🛠️ Tools
📅 API Platform Conference
Sketchnote illustrant l'intégration de gRPC dans API Platform. Le schéma montre l'architecture avec FrankenPHP comme connecteur central entre un client, API Platform (écrit en PHP) et une API Go utilisant gRPC. Les avantages de gRPC sont mis en avant: format binaire, faible latence, typage fort et agnosticisme du langage. Les cas d'usage concernent les micro-services, l'IoT ou encore les projets demandant de la résilience.

Enhance your API Platform APIs with Go thanks to FrankenPHP

Publié le 29 novembre 2025
Par Kévin Dunglas
🔗 API 🚀 Performance 🐘 PHP
📅 API Platform Conference
Sketchnote illustrant la programmation asynchrone en PHP présentée lors d'un meetup AFUP Lorraine. Le schéma explique ce qui ne se déroule pas en même temps grâce au parallélisme. Trois modes d'exécution sont comparés : séquentiel (tâches 1-2-3-4 en série), asynchrone (tâches 1-2 puis 4 pendant que 3 s'exécute), et parallèle (tâches 1-2-4 pendant tâche 3). Le traitement non bloquant est possible depuis PHP 3 avec set/stream_select, puis les coroutines depuis PHP 5.5 via les générateurs, les Fiber depuis PHP 8.1, et l'event loop qui connecte Promises et Futur. En discussion : RFC true async pour enchaîner rapidement ces mécanismes.

PHP est-il asynchrone ?

Publié le 08 décembre 2025
Par Frédéric Bouchery
🐘 PHP 🚀 Performance
📅 AFUP Lorraine
Cette sketchnote représente la conférence 'Le lazy-loading est plus que vous ne le pensez !' présentée par Baptiste Leduc lors de l'AFUP Day Lille le 16 mai. En haut, le titre 'Lazy Loading' est affiché en gros caractères avec le sous-titre 'Charger les données quand on en a besoin'. À gauche, des illustrations représentent '4 Patterns' avec des icônes pour 'Initialization', 'Value Holder', 'Virtual Proxies', et 'Ghost Object'. Au centre, des annotations comme 'Intégré à PHP 8.4' sont illustrées. À droite, des icônes représentent 'Usages' avec 'Injection de dépendance chez Symfony' et 'Entité Doctrine'. En bas, des icônes illustrent 'Cas concret PIM' avec 'Retour des produits par API', 'Les appels sont exécutés en tâche de fond', 'Bloquant uniquement si on accède réellement aux données immédiatement', 'Un listener charge les données', 'Chargement asynchrone avec HTTP client', et 'Batch des requêtes multiples'.

Le lazy-loading est plus que vous ne le pensez !

Publié le 19 mai 2025
🚀 Performance 🐘 PHP 🏗️ Architecture
📅 AFUP Day
Cette sketchnote représente la conférence 'REX : Comment reprendre en main son legacy' présentée par Nicolas Fatrez lors de l'AFUP Day Lille le 16 mai. En haut, le titre 'REX : Comment reprendre en main son legacy' est affiché en gros caractères avec des mots comme 'Pas d'env simple à installer', 'Pas de docs', et 'Pas de bonnes fondations' en dessous. Au centre, le mot 'LEGACY' est écrit en grandes lettres orange avec des annotations autour. À gauche, une illustration de Docker avec une flèche pointant vers 'Réconcilier Prod & Git' et 'Formation de l'équipe'. Au centre, des icônes représentent 'Ajout de Composer', 'Migration & mise à jour des technos', et 'Script de migration automatique'. À droite, des icônes illustrent 'Migration d'encodage', 'Gestion des secrets', 'Déploiement automatisé', 'Migration sur Symfony par briques', et 'Application de design pattern'. En bas, des illustrations de bâtiments décorent l'image.

REX : Comment reprendre en main son legacy

Publié le 19 mai 2025
Par Nicolas Fatrez
🏗️ Architecture 🚀 Performance
📅 AFUP Day
Cette sketchnote résume la conférence 'Minority Report : Optimisez votre expérience utilisateur avec du cache par anticipation' présentée lors de l'AFUP Day Lille le 16 mai. En haut, le titre 'Minority Report' est affiché avec le sous-titre 'Optimisez votre expérience utilisateur avec du cache par anticipation'. La sketchnote met en avant plusieurs concepts clés pour utiliser le cache par anticipation. Elle commence par souligner les avantages du cache, comme la réduction des temps de réponse, la diminution de la charge serveur, et l'amélioration de la scalabilité. Un graphique montre la relation entre le temps de réponse et le nombre de visiteurs, illustrant l'impact du cache. La question 'Quoi cacher ?' est posée, avec des éléments comme HTML, JSON, CSS, et les images. La sketchnote aborde également des problèmes comme le premier chargement lourd et propose des solutions comme le cache par expiration et le préchargement des pages qui devraient être utilisées. Des concepts comme les chaînes de Markov et les probabilités de changement d'état sont illustrés pour anticiper les parcours utilisateurs. Enfin, des conseils pour l'implémentation sont partagés, comme l'utilisation de headers et de préchargement.

Minority Report : Optimisez votre expérience utilisateur avec du cache par anticipation

Publié le 19 mai 2025
Par Clément Talleu
🚀 Performance 🏗️ Architecture
📅 AFUP Day