Performances de Webman
Flux de traitement des requêtes des frameworks traditionnels
- nginx/apache reçoit la requête
- nginx/apache transmet la requête à php-fpm
- php-fpm initialise l'environnement, comme la création de la liste des variables
- php-fpm appelle RINIT de chaque extension/module
- php-fpm lit le fichier php depuis le disque (peut être évité en utilisant opcache)
- php-fpm effectue l'analyse lexicale, l'analyse syntaxique, compile en opcode (peut être évité en utilisant opcache)
- php-fpm exécute l'opcode, y compris 8.9.10.11
- Le framework s'initialise, instanciant divers types, y compris des conteneurs, contrôleurs, routes, middleware, etc.
- Le framework se connecte à la base de données et vérifie les autorisations, se connecte à redis
- Le framework exécute la logique métier
- Le framework ferme les connexions à la base de données et à redis
- php-fpm libère les ressources, détruit toutes les définitions de classes, instances, détruit la table des symboles, etc.
- php-fpm appelle séquentiellement la méthode RSHUTDOWN de chaque extension/module
- php-fpm transmet le résultat à nginx/apache
- nginx/apache renvoie le résultat au client
Flux de traitement des requêtes de Webman
- Le framework reçoit la requête
- Le framework exécute la logique métier (code bytecode opcode)
- Le framework renvoie le résultat au client
En effet, sans le reverse proxy nginx, le framework ne comporte que ces 3 étapes. On peut dire que cela représente l'aboutissement des frameworks PHP, ce qui rend les performances de Webman plusieurs fois, voire des dizaines de fois supérieures à celles des frameworks traditionnels.
Pour plus de détails, consultez les tests de charge