Principe de FastCGI
FastCGI est une interface utilisée pour la communication entre HttpServer et les langages de script dynamiques. prend en charge FastCGI, notamment Apache, Nginx et lighttpd. Dans le même temps, FastCGI est également pris en charge par de nombreux langages de script, dont PHP. (Apprentissage recommandé : Tutoriel Nginx)
L'interface FastCGI adopte une structure C/S, qui peut séparer le serveur HttP et le serveur d'analyse de script, et démarrer un ou plusieurs scripts sur le serveur d'analyse de script en même temps, le démon Parse.
Chaque fois que le serveur HttP rencontre un programme dynamique, il peut être livré directement au processus FastCGI pour exécution, puis le résultat est renvoyé au client. Cette méthode permet au serveur HttP de traiter exclusivement les requêtes statiques ou de renvoyer les résultats du serveur de script dynamique au client, ce qui améliore considérablement les performances de l'ensemble du système applicatif.
Principe d'implémentation de Nginx+php-fpm
Nginx lui-même n'analysera pas PHP, et les requêtes du terminal pour les pages PHP seront transmises à FastCGI par Nginx. L'adresse IP et le port surveillés par le processus sont traités par php-fpm en tant que serveur d'analyse dynamique, et les résultats du traitement sont finalement renvoyés à nginx.
En fait, Nginx est un serveur proxy inverse. Nginx transmet les requêtes dynamiques au backend php-fpm via la fonction de proxy inverse, réalisant ainsi la prise en charge de l'analyse PHP. C'est le principe de Nginx implémentant l'analyse dynamique PHP.
Nginx ne prend pas en charge l'appel direct ou l'analyse de programmes externes. Tous les programmes externes (y compris PHP) doivent être appelés via l'interface FastCGI.
L'interface FastCGI est une socket sous Linux (cette socket peut être une socket file ou une socket ip). Pour appeler un programme CGI, un wrapper FastCGI est également nécessaire (un wrapper peut être compris comme un programme utilisé pour démarrer un autre programme. Ce wrapper est lié à un socket fixe, tel qu'un port ou un socket de fichier).
Lorsque Nginx envoie une requête CGI à ce socket, via l'interface FastCGI, le wrapper reçoit la requête puis génère un nouveau thread. Ce thread appelle l'interpréteur ou le programme externe pour traiter le script et lire les données de retour. . Ensuite, le wrapper transmet les données renvoyées à Nginx via l'interface FastCGI et enfin, via le socket fixe, Nginx envoie les données renvoyées au client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!