Performances de Webman

Flux de traitement des requêtes des frameworks traditionnels

  1. nginx/apache reçoit la requête
  2. nginx/apache transmet la requête à php-fpm
  3. php-fpm initialise l'environnement, comme la création de la liste des variables
  4. php-fpm appelle RINIT de chaque extension/module
  5. php-fpm lit le fichier php depuis le disque (peut être évité en utilisant opcache)
  6. php-fpm effectue l'analyse lexicale, l'analyse syntaxique, compile en opcode (peut être évité en utilisant opcache)
  7. php-fpm exécute l'opcode, y compris 8.9.10.11
  8. Le framework s'initialise, instanciant divers types, y compris des conteneurs, contrôleurs, routes, middleware, etc.
  9. Le framework se connecte à la base de données et vérifie les autorisations, se connecte à redis
  10. Le framework exécute la logique métier
  11. Le framework ferme les connexions à la base de données et à redis
  12. php-fpm libère les ressources, détruit toutes les définitions de classes, instances, détruit la table des symboles, etc.
  13. php-fpm appelle séquentiellement la méthode RSHUTDOWN de chaque extension/module
  14. php-fpm transmet le résultat à nginx/apache
  15. nginx/apache renvoie le résultat au client

Flux de traitement des requêtes de Webman

  1. Le framework reçoit la requête
  2. Le framework exécute la logique métier (code bytecode opcode)
  3. 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