cgi, fastcgi, php-cgi, php-fpm
Cet article présente l'analyse de cgi, fastcgi, php-cgi et php-fpm. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Définition<.>
Le serveur Web (comme nginx) n'est qu'un distributeur de contenu. Par exemple, siD'accord, CGI est un protocole et n'a rien à voir avec un processus ou quoi que ce soit. Alors, qu’est-ce que fastcgi ? Fastcgi est utilisé pour améliorer les performances des programmes CGI.est demandé, le serveur Web trouvera le fichier dans le système de fichiers et l'enverra au navigateur. Ce qui est distribué ici, ce sont des données statiques. D'accord, si la requête est maintenant
Lorsque le serveur web recevra la requête/index.html
, selon le fichier de configuration, nginx sait qu'il ne s'agit pas d'un fichier statique et doit être traité par l'analyseur PHP, alors il traitera simplement la requête et la remettra au PHP. analyseur. Quelles données Nginx transmettra-t-il à l'analyseur PHP ? L'URL doit être présente, la chaîne de requête doit être présente, les données POST doivent être présentes et l'en-tête HTTP doit être présent. Eh bien, CGI est le protocole qui stipule quelles données doivent être transmises et dans quel format elles doivent être transmises. le backend pour traiter la demande. Réfléchissez bien à la provenance des utilisateurs que vous utilisez dans votre code PHP./index.php
, il lancera le programme CGI correspondant, voici l'analyseur PHP. Ensuite, l'analyseur PHP analysera le fichier php.ini, initialisera l'environnement d'exécution, traitera la demande, renverra le résultat traité dans le format spécifié par CGI et quittera le processus. Le serveur Web renvoie ensuite les résultats au navigateur.
/index.php
Améliorez les performances, alors quels sont les problèmes de performances des programmes CGI ? "L'analyseur PHP analysera le fichier php.ini et initialisera l'environnement d'exécution", c'est tout. Le CGI standard effectuera ces étapes pour chaque requête (ne soyez pas fatigué ! Démarrer le processus est très fatiguant !), donc le temps de traitement à chaque fois sera relativement long. C'est évidemment déraisonnable ! Alors, comment Fastcgi fait-il ? Tout d'abord, Fastcgi démarrera un maître, analysera le fichier de configuration, initialisera l'environnement d'exécution, puis démarrera plusieurs travailleurs. Lorsqu'une demande arrive, le maître la transmet à un travailleur et peut immédiatement accepter la demande suivante. Cela évite la duplication du travail et est naturellement très efficace. Et lorsqu'il n'y a pas assez de Workers, le maître peut pré-démarrer plusieurs Workers selon la configuration et attendre. Bien sûr, lorsqu'il y a trop de Workers inactifs, certains seront arrêtés, ce qui améliore les performances et économise les ressources. Il s'agit de la gestion des processus de fastcgi.
cgi
L'interface de passerelle universelle, la norme d'interface entre les programmes externes et les serveurs Web, est le processus de transfert d'informations entre les programmes cgi et les serveurs Web
Chaque requête générera un processus cgi. Une fois le programme cgi exécuté, le processus se termine
Indépendant du serveur et du langage de programmation indépendant
FastCgi
FastCgi est comme un Cgi résident, il peut toujours exécuter ça, tant qu'il est activé, il n'y a pas besoin de bifurquer à chaque fois, et il prend également en charge l'informatique distribuée, c'est-à-dire que le programme FastCgi peut être exécuté sur un hôte autre que le serveur du site Web et accepter les requêtes d'autres serveurs du site Web
Peut gérer plusieurs requêtes en même temps time
Utilisation de la mémoire à long terme
php-cgi
gestionnaire de processus FastCGI officiel de php
Après avoir modifié php.ini, vous devez tuer php-cgi puis démarrer php.ini pour qu'il prenne effet. Impossible de redémarrer en douceur
La mémoire ne peut pas être allouée dynamiquement
php-fpm
Non officiel Le fastCgi Le gestionnaire de processus a été officiellement inclus à partir de php5.4 Lors de la compilation de php, vous n'avez besoin que de –enable-fpm pour activer php-fpm
qui peut redémarrer php en douceur
. Processus de planification dynamique
Nginx est uniquement responsable du transfert de proxy inverse/de requête et n'est pas responsable de la gestion du processus php-cgi, donc Nginx est généralement utilisé avec php-fpm qui peut gérer le processus de travail (processus enfant) par lui-même Il faut faire attention De plus, php-fpm est un SAPI indépendant, qui ne gère pas php-cgi. Autrement dit, php-fpm n'a rien à voir avec php-cgi. php-fpm a un interpréteur php intégré. , et le sous-processus de php-fpm est forké tout seul. Oui, il n'appellera pas php-cgi si vous supprimez php-cgi dans le système, cela n'affectera pas le fonctionnement normal du service php-fpm. 🎜>
php-fpm est un processus de travail sous la configuration pm = statique. Permanent en arrière-plan, c'est-à-dire que si vous configurez 5 processus de travail pm.max_children = 5, alors lorsque le service php-fpm démarrera, il le fera. supprime automatiquement 5 processus enfants et reste en arrière-plan, et ne se fermera pas une fois le traitement de la demande terminé. Ne se fermera pas en cas d'inactivité Si vous utilisez une connexion persistante à la base de données dans un script php, ces 5 processus de travail seront également établis et maintenus. 5 connexions persistantes à la base de données pour réutiliser la connexion à la base de données lors du traitement de plusieurs requêtes afin d'éviter d'établir/libérer une connexion à la base de données pour chaque requête. Les connexions persistantes peuvent également se reconnecter automatiquement après un délai d'attente, ce qui est complètement transparent pour le script dans php-fpm. Le script doit uniquement spécifier l'utilisation de connexions persistantes au démarrage. Oui.
php-fpm fonctionne dans la configuration pm = dynamique [partie] pour résider en arrière-plan, c'est-à-dire pour maintenir un certain nombre de processus résidents. Lorsque le service est occupé, davantage de processus seront bifurqués, et certains processus le seront. être automatiquement arrêté lorsque le service est inactif. Renvoyez les ressources mémoire au système d'exploitation. Les fournisseurs d'hôtes virtuels devraient préférer cette méthode
En bref, le mode de fonctionnement de PHP-FPM est similaire au MPM préfork d'Apache, un mode statique. et un service de réseau multi-processus dynamique.
php-cgi est l'un des premiers gestionnaires fastcgi produit par PHP officiel et n'est pas pris en charge. Pour un redémarrage en douceur, si vous modifiez php.ini, vous devez supprimer le php-cgi d'origine et le redémarrer pour prendre effet. La planification dynamique des travailleurs n'est pas prise en charge et vous pouvez uniquement spécifier le nombre de travailleurs à démarrer ; au début.
php-fpm est un gestionnaire de processus fastcgi qui n'a été ajouté que dans la version 5.3.3. Il ajoute une fonction de planification dynamique, qui peut augmenter ou diminuer dynamiquement le nombre de processus de travail en fonction des changements dans la pression entrante des demandes ; prend en charge la commande reload pour permettre au processus de travail de terminer le redémarrage après la requête en cours et applique la nouvelle configuration php.ini.
php54 était une relation avant, Une autre relation après php54.
Avant php54, php-fpm (compilation tierce) est le gestionnaire, php-cgi est l'interprète
Après php54, php-fpm ( officiel Livré avec), modes maître et pool. php-fpm et php-cgi n'ont rien à voir l'un avec l'autre. php-fpm est à la fois interprète et gestionnaire
Site de référence https://www.zhihu.com/question/55835080
https://segmentfault .com /q/1010000000256516
Recommandations associées :
Illustration de la relation entre CGI, FastCGI et 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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser php-fpm pour un réglage hautes performances PHP est un langage de script côté serveur très populaire, largement utilisé pour développer des applications Web et des sites Web dynamiques. Cependant, à mesure que le trafic augmente, les performances de votre application PHP peuvent en souffrir. Afin de résoudre ce problème, nous pouvons utiliser php-fpm (FastCGIProcessManager) pour un réglage hautes performances. Cet article expliquera comment utiliser php-fpm pour améliorer les performances des applications PHP et fournira des exemples de code. un,

Comment utiliser l'optimisation PHP-FPM pour améliorer les performances des applications PrestaShop Avec le développement rapide du secteur du commerce électronique, PrestaShop est devenue la plateforme de commerce électronique choisie par de nombreux commerçants. Cependant, à mesure que la taille de la boutique augmente et que le nombre de visites augmente, l'application PrestaShop peut rencontrer des goulots d'étranglement en termes de performances. Afin d'améliorer les performances de l'application PrestaShop, une méthode courante consiste à utiliser PHP-FPM pour optimiser et améliorer les capacités de traitement de l'application. PHP-FPM (FastCGI

Comment améliorer les performances des applications WooCommerce à l'aide de l'optimisation PHP-FPM Présentation WooCommerce est un plugin de commerce électronique très populaire pour créer et gérer des boutiques en ligne sur des sites Web WordPress. Cependant, à mesure que votre boutique se développe et que le trafic augmente, les applications WooCommerce peuvent devenir lentes et instables. Pour résoudre ce problème, nous pouvons utiliser PHP-FPM pour optimiser et améliorer les performances des applications WooCommerce. Qu'est-ce que PHP-FP

Présentation de l'utilisation du pool de connexions php-fpm pour améliorer les performances d'accès aux bases de données : Dans le développement Web, l'accès aux bases de données est l'une des opérations les plus fréquentes et les plus longues. La méthode traditionnelle consiste à créer une nouvelle connexion à la base de données pour chaque opération de base de données, puis à fermer la connexion après utilisation. Cette méthode entraînera l’établissement et la fermeture fréquents de connexions à la base de données, augmentant ainsi la surcharge du système. Afin de résoudre ce problème, vous pouvez utiliser la technologie de pool de connexions php-fpm pour améliorer les performances d'accès à la base de données. Principe du pool de connexions : Le pool de connexions est une technologie de mise en cache qui regroupe un certain nombre de bases de données

PHP-FPM est un gestionnaire de processus PHP couramment utilisé pour offrir de meilleures performances et stabilité PHP. Cependant, dans un environnement à forte charge, la configuration par défaut de PHP-FPM peut ne pas répondre aux besoins, nous devons donc l'ajuster. Cet article présentera en détail la méthode de réglage de PHP-FPM et donnera quelques exemples de code. 1. Augmentez le nombre de processus Par défaut, PHP-FPM ne démarre qu'un petit nombre de processus pour gérer les requêtes. Dans un environnement à charge élevée, nous pouvons augmenter la concurrence de PHP-FPM en augmentant le nombre de processus.

Comment utiliser PHP-FPM pour optimiser et améliorer les performances des applications Phalcon Introduction : Phalcon est un framework PHP haute performance. La combinaison avec PHP-FPM peut encore améliorer les performances des applications. Cet article expliquera comment utiliser PHP-FPM pour optimiser les performances des applications Phalcon et fournira des exemples de code spécifiques. 1. Qu'est-ce que PHP-FPMPHP-FPM (PHPFastCGIProcessManager) est un processus PHP indépendant du serveur web

La solution pour Ubuntu sans php-fpm : 1. Ajoutez l'adresse source de PHP en exécutant la commande "sudo apt-get" ; 2. Vérifiez s'il existe un package php7 3. Installez PHP en exécutant la commande "sudo apt-get" ; install" ; 4. , modifiez la configuration pour écouter sur le port 9000 afin de gérer les requêtes nginx ; 5. Démarrez "php7.2-fpm" via "sudo service php7.2-fpm start".

Qu'est-ce que php-fpm ? L'article suivant vous amènera à comprendre php-fpm et à présenter ce que nous devons optimiser lors de l'optimisation de php-fpm. J'espère qu'il sera utile à tout le monde !
