Maison > développement back-end > tutoriel php > Comparez les différences entre CGI, FastCGI, PHP-CGI et PHP-FPM

Comparez les différences entre CGI, FastCGI, PHP-CGI et PHP-FPM

巴扎黑
Libérer: 2023-03-15 13:22:01
original
2343 Les gens l'ont consulté

CGI

Le nom complet de CGI est "Common Gateway Interface", un outil permettant au serveur HTTP de "parler" avec votre programme ou celui d'autres machines. Le programme doit s'exécuter sur le réseau du réseau. serveur.

CGI peut être écrit dans n'importe quel langage à condition que le langage ait des variables d'entrée, de sortie et d'environnement standard. Tels que php, perl, tcl, etc.

FastCGI

FastCGI est comme un CGI de longue durée. Il peut être exécuté à tout moment, tant qu'il est activé, il ne faudra pas de temps pour bifurquer à chaque fois (c'est le cas). mode fork-and-execute le plus critiqué de CGI). Il prend également en charge l'informatique distribuée, c'est-à-dire que les programmes FastCGI peuvent être exécutés sur des hôtes autres que le serveur du site Web et accepter les demandes d'autres serveurs du site Web.

FastCGI est une extension ouverte CGI à architecture évolutive et indépendante du langage. Son comportement principal est de conserver le processus de l'interpréteur CGI en mémoire et ainsi d'obtenir des performances plus élevées. Comme nous le savons tous, le chargement répété de l'interpréteur CGI est la principale raison des faibles performances CGI. Si l'interpréteur CGI reste en mémoire et accepte la planification du gestionnaire de processus FastCGI, il peut offrir de bonnes performances, une évolutivité, des fonctionnalités de basculement, etc.

Fonctionnalités FastCGI

FastCGI est indépendant du langage.

FastCGI est une application en cours qui s'exécute indépendamment du serveur Web principal, offrant un environnement plus sécurisé que l'API. Les API relient le code d'une application au serveur Web principal, ce qui signifie qu'une application avec la mauvaise API pourrait interrompre d'autres applications ou le serveur principal. Le code d'application API malveillant peut même voler les clés d'une autre application ou d'un serveur principal.

La technologie FastCGI supporte actuellement les langages : C/C++, Java, Perl, Tcl, Python, SmallTalk, Ruby, etc. Des modules associés sont également disponibles sur des serveurs populaires tels que Apache, ISS, Lighttpd, etc.

FastCGI ne dépend de l'architecture interne d'aucun serveur Web, donc même si la technologie du serveur évolue, FastCGI reste stable.

Fonctionnement de FastCGI

Charger le gestionnaire de processus FastCGI (IIS ISAPI ou module Apache) au démarrage du serveur Web

Le gestionnaire de processus FastCGI s'initialise et démarre plusieurs processus d'interprétation CGI (plusieurs php-cgi visibles) et attend la connexion du serveur Web.

Lorsqu'une requête client atteint le serveur Web, le gestionnaire de processus FastCGI sélectionne et se connecte à un interpréteur CGI. Le serveur Web envoie des variables d'environnement CGI et des entrées standard au sous-processus FastCGI php-cgi.

Une fois le sous-processus FastCGI terminé, il renvoie la sortie standard et les informations d'erreur au serveur Web à partir de la même connexion. Lorsque le processus enfant FastCGI ferme la connexion, la demande est traitée. Le processus enfant FastCGI attend et gère ensuite la prochaine connexion du gestionnaire de processus FastCGI (exécuté sur le serveur Web). En mode CGI, php-cgi se termine à ce stade.

Dans le cas ci-dessus, vous pouvez imaginer à quel point CGI est généralement lent. Chaque requête Web adressée à PHP doit réanalyser php.ini, recharger toutes les extensions et réinitialiser toutes les structures de données. Avec FastCGI, tout cela ne se produit qu’une seule fois, au démarrage du processus. Un avantage supplémentaire est que les connexions persistantes aux bases de données fonctionnent.

Inconvénients de FastCGI

Parce qu'il est multi-processus, il consomme plus de mémoire serveur que le multithreading CGI. L'interpréteur PHP-CGI consomme 7 à 25 Mo de mémoire par processus. le numéro 50 ou 100 représente une grande quantité de mémoire.

Le serveur Nginx 0.8.46+PHP 5.2.14 (FastCGI) a 30 000 connexions simultanées. Les 10 processus Nginx ouverts consomment 150 Mo de mémoire (15 M*10 = 150 M), et les 64 php-cgi ouverts. 1280 Mo de mémoire (20 M*64 = 1280 M), plus la mémoire consommée par le système lui-même, la consommation totale est inférieure à 2 Go de mémoire. Si la mémoire du serveur est petite, vous ne pouvez ouvrir que 25 processus php-cgi, de sorte que la mémoire totale consommée par php-cgi n'est que de 500 Mo.

Les données ci-dessus sont extraites de Nginx 0.8.x + PHP 5.2.13 (FastCGI) pour construire un serveur Web dix fois meilleur qu'Apache (version 6)

PHP-CGI

PHP-CGI est le gestionnaire FastCGI fourni avec PHP.

Inconvénients de PHP-CGI :

Après que php-cgi ait modifié la configuration de php.ini, vous devez redémarrer php-cgi pour que le nouveau php-ini prenne effet. Il ne peut pas être redémarré. doucement.

Tuez directement le processus php-cgi et php ne pourra pas s'exécuter. (PHP-FPM et Spawn-FCGI n'ont pas ce problème. Le processus démon régénérera en douceur les nouveaux processus enfants.)

PHP-FPM

PHP-FPM est un gestionnaire PHP FastCGI. est uniquement pour PHP et peut être téléchargé sur http://php-fpm.org/download.

PHP-FPM est en fait un patch du code source PHP, conçu pour intégrer la gestion des processus FastCGI dans le package PHP. Il doit être corrigé dans votre code source PHP et peut être utilisé après la compilation et l'installation de PHP.

Nous pouvons désormais télécharger la branche qui intègre directement PHP-FPM dans la dernière arborescence des sources de PHP 5.3.2. On dit que la prochaine version sera intégrée dans la branche principale de PHP. Comparé à Spawn-FCGI, PHP-FPM a un meilleur contrôle du processeur et de la mémoire, et le premier plante facilement et doit être surveillé avec crontab, alors que PHP-FPM n'a pas de tels problèmes.

PHP5.3.3 a intégré php-fpm et n'est plus un package tiers. PHP-FPM fournit une meilleure méthode de gestion des processus PHP, qui peut contrôler efficacement la mémoire et les processus, et recharger en douceur la configuration PHP. Il présente plus d'avantages que spawn-fcgi, il est donc officiellement inclus dans PHP. PHP-FPM peut être activé en passant le paramètre –enable-fpm dans ./configure.

Spawn-FCGI

Spawn-FCGI est un serveur de gestion FastCGI universel. Il fait partie de lighttpd De nombreuses personnes utilisent Spawn-FCGI de Lighttpd pour effectuer des travaux de gestion en mode FastCGI, mais il présente de nombreux défauts. L'émergence de PHP-FPM a quelque peu atténué certains problèmes, mais PHP-FPM a l'inconvénient de devoir être recompilé, ce qui peut présenter un risque considérable (voir) pour certains environnements déjà en cours d'exécution. Il peut être utilisé directement dans PHP 5.3.3 PHP. -FPM.

Spawn-FCGI est désormais devenu un projet distinct, plus stable et apportant plus de commodité à la configuration de nombreux sites Web. De nombreux sites l'ont associé à nginx pour résoudre des pages Web dynamiques.

Le dernier lighttpd n'inclut pas cette pièce (http://www.lighttpd.net/search?q=Spawn-FCGI), mais elle peut être trouvée dans les versions précédentes. Il est inclus dans la version lighttpd-1.4.15 (http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz L'adresse de téléchargement actuelle de Spawn-FCGI est http://redmine). lighttpd .net/projects/spawn-fcgi, la dernière version est http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz.

Remarque : Pour la dernière version de Spawn-FCGI, vous pouvez rechercher "Spawn-FCGI" sur le site Web lighttpd.net pour trouver l'adresse de sa dernière version.

La comparaison entre PHP-FPM et spawn-CGI

PHP-FPM est très pratique à utiliser La configuration est dans le fichier PHP-FPM.ini, et le démarrage et le redémarrage peuvent être effectués depuis. php/ Effectué dans sbin/PHP-FPM. Ce qui est plus pratique, c'est qu'après avoir modifié php.ini, vous pouvez directement utiliser le rechargement PHP-FPM pour le charger. Vous pouvez terminer la modification et le chargement de php.ini sans tuer le processus

Les résultats montrent que l'utilisation. PHP-FPM peut apporter de nombreux changements aux performances de PHP. La vitesse de recyclage du processeur du processus contrôlé par PHP-FPM est relativement lente et la mémoire est allouée uniformément.

Le CPU du processus contrôlé par Spawn-FCGI chute rapidement et l'allocation de mémoire est inégale. De nombreux processus semblent non alloués, tandis que d’autres sont très occupés. Cela peut être dû à une répartition inégale des tâches de processus. Cela entraîne également une diminution de la vitesse de réponse globale. La répartition raisonnable de PHP-FPM conduit à évoquer la réponse globale et la moyenne des tâches.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal