Maison >développement back-end >Problème PHP >Trois façons d'exécuter php
Les trois façons d'exécuter PHP sont : 1. Via le module intégré de HTTPServer 2. Via CGI 3. Via FastCGI ;
Recommandé : "Tutoriel vidéo PHP"
Trois façons d'exécuter PHP
Trois modes de fonctionnement : mod_php5, cgi, fast-cgi
1 Implémenté via le module intégré de HTTPServer,
Par exemple, le mod_php5 d'Apache, similaire au module intégré d'Apache. mod_perl peut Supporter Perl
2. Implémenté via CGI
C'est comme le CGI précédent de Perl. L'inconvénient de cette méthode est de mauvaises performances, car chaque. fois que le serveur rencontre Ces scripts nécessitent de redémarrer l'analyseur de script pour exécuter le script puis renvoyer les résultats au serveur. Par contre, elle n'est pas très sûre
Cette méthode est presque rarement utilisée.
3. Le dernier en date s'appelle FastCGI.
Le soi-disant FastCGI est une amélioration du CGI. Il adopte généralement une structure C/S. Généralement, le processeur de script démarre un ou plusieurs processus démons. Chaque fois que HTTPServer rencontre un script, il est directement transmis au processus FastCGI pour exécution, puis le résultat (généralement HTML) est renvoyé. . au navigateur.
Un petit problème avec cette méthode est que lorsqu'on rencontre des requêtes fréquentes avec un trafic important, le processus démon du processeur de script peut être surchargé et devenir très lent, voire provoquer une fuite de mémoire
; Mais l'avantage par rapport à la méthode de module intégrée d'Apache est que le serveur et l'analyseur de script sont complètement séparés et responsables de leurs propres responsabilités, de sorte que le serveur n'est plus surchargé et peut se concentrer sur la réponse aux fichiers statiques ou sur le renvoi des résultats de l'analyse dynamique. analyseur de script. Donnez à l'utilisateur le client.
Ainsi, par rapport à la méthode des modules intégrés d'Apache, les performances sont parfois bien améliorées.
Certaines personnes ont testé qu'il peut être 5 à 10 fois plus rapide qu'Apache+mod_php.
3.1. Modes communs FastCGI :
lightppd+spawn-fcgi
nginx+PHP-FPM
a, ce qui précède 2 Tous utilisent FastCGI pour prendre en charge PHP, donc HTTPServer est complètement libéré et peut mieux répondre et gérer simultanément.
b. Puisque spawn-fcgi fait partie de lighttpd, si lighttpd est installé, spawn-fcgi sera généralement utilisé pour prendre en charge PHP. Cependant, certains utilisateurs disent actuellement que spwan-fcgi de lighttpd échouera en cas de concurrence élevée. accès. La fuite de mémoire mentionnée ci-dessus peut même redémarrer automatiquement fastcgi.
Contrairement à lighttpd lui-même, nginx est livré avec fastcgi (spawn-fcgi), il est donc complètement léger et nécessite l'aide d'un processeur FastCGI tiers pour analyser PHP, il semble donc que ce nginx soit très flexible et peut être connecté à n'importe quel processeur d'analyse tiers pour analyser PHP.
nginx peut utiliser spwan-fcgi (lighttpd doit être installé ensemble, mais le port doit être évité pour nginx. Certains blogs plus anciens ont des tutoriels sur cette installation), mais depuis spawn-fcgi a les utilisateurs mentionnés ci-dessus Les défauts ont été progressivement découverts, et désormais l'utilisation de la combinaison nginx+spawn-fcgi est progressivement réduite.
c. En raison des défauts de spawn-fcgi, un nouveau processeur tiers (actuellement encore, j'ai entendu dire qu'ils travaillaient dur pour l'ajouter au noyau PHP dans un avenir proche) est apparu , appelé PHP-FPM. Par rapport à spawn-fcgi, il présente les avantages suivants :
Puisque PHP-FPM est développé comme un patch PHP, il doit être compilé avec le code source PHP lors de l'installation, ce qui signifie qu'il est compilé dans Noyau PHP. Par conséquent, il est meilleur en termes de performances ;
En même temps, il est également meilleur que spawn-fcgi pour gérer une concurrence élevée, au moins il ne redémarrera pas automatiquement le processeur fastcgi.
Par conséquent, comme mentionné ci-dessus, en raison de la légèreté et de la flexibilité de nginx, ses performances actuelles sont supérieures, et de plus en plus de personnes utilisent progressivement cette combinaison : nginx+PHP/PHP-FPM.
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!