Maison  >  Article  >  développement back-end  >  Vous faire connaître le mode de fonctionnement PHP

Vous faire connaître le mode de fonctionnement PHP

藏色散人
藏色散人avant
2021-02-22 09:15:453167parcourir

Recommandé : "Tutoriel vidéo PHP"

PHP a cinq modes de fonctionnement, et il y en a 4 courants :

1.CGI (Common Gateway Interface)
2.FastCGI (Résident CGI/Long-Live CGI)
3.CLI (Command Line Interface)
4.LoadModule [Apache exclusive]
5.ISAPI (Interface de programme d'application du serveur Internet) [Exclusivité IIS]

Remarque : après PHP5.3, PHP n'a plus de mode ISAPI et n'existe plus après l'installation du fichier php5isapi.dll. Pour utiliser une version supérieure de PHP sur IIS6, vous devez installer l'extension FastCGI, puis activer IIS6 pour prendre en charge FastCGI.

Afficher le mode d'exécution actuel
echo php_sapi_name();

Mode CGI

Introduction :

CGI est l'interface de passerelle commune. C'est un programme. En termes simples, CGI est comme un pont qui relie les pages Web et les programmes d'exécution dans le serveur Web. le programme d'exécution du serveur, puis les résultats du programme d'exécution du serveur sont renvoyés à la page HTML. CGI est extrêmement multiplateforme et peut être implémenté sur presque tous les systèmes d'exploitation.

Processus d'appel : mode Fork-And-Execute

Demande de l'utilisateur —> le serveur Web reçoit la requête [couramment utilisé Nginx, apache] —> processus enfant fork CGI et traiter le request—->gt; Une fois la requête traitée, renvoyer le résultat au serveur Web & Détruire le processus enfant—> Le serveur Web renvoie le résultat à l'utilisateur

Illustration :
Vous faire connaître le mode de fonctionnement PHP
Avantages :

En tant que premier mode de fonctionnement de PHP, chaque requête est traitée indépendamment, le processus d'appel est suffisamment simple et clair, et hautement contrôlable
Les processus sont isolés, garantissant que les données ne seront pas polluées

Inconvénients :

Chaque requête nécessite de créer un nouveau sous-processus CGI s'il y en a mille simultanés. requêtes en même temps, cela signifie que Forker un millier de processus enfants entraînera plusieurs problèmes :

  1. Forker des processus enfants prend du temps et occupe de la mémoire [copie sur écriture]
  2. Il y a trop de processus enfants. Le processeur passera beaucoup de temps à changer de contexte
  3. Chaque requête nécessite le rechargement des ressources associées

Mode FastCGI

Introduction :

FastCGI est une version améliorée de FastCGI est comme un CGI de longue durée Lors du démarrage du serveur Web, le gestionnaire de processus FastCGI [PHP-. FPM, IIS ISAPI, Apache Module], lorsqu'une requête arrive, le serveur Web doit uniquement être transmis au gestionnaire de processus FastCGI pour traitement.
Processus d'appel : prenez PHP-FPM comme exemple

Lorsque le serveur Web démarre, le processus maître PHP-FPM est démarré (principalement responsable de l'allocation des requêtes aux auto-enfants inactifs processus) et un certain nombre de processus enfants fast-cgi (responsables du traitement des demandes). Le processus maître PHP-FPM gère un pool de processus. Il existe plusieurs sous-processus fast-cgi dans le pool. Chaque sous-processus fast-cgi traite une requête indépendamment sans interférer les uns avec les autres.

Demande utilisateur -> Le serveur Web reçoit la requête [couramment utilisé Nginx, apache] -> Détecte qu'il s'agit d'une requête PHP et la transmet au processus maître FPM -> le sous-processus fast-cgi inactif pour gérer la requête —> Le processus enfant charge les fichiers (tels que php.ini) et d'autres requêtes de traitement de ressources —> Le traitement se termine et efface les ressources, le résultat est renvoyé au processus maître et enfant se bloque, marqué comme inactif —> master renvoie le résultat au serveur Web — > Le serveur Web renvoie les résultats à l'utilisateur

Illustration :
Vous faire connaître le mode de fonctionnement PHP
Avantages :

  1. De stable D'un point de vue de sécurité, FastCGI utilise un pool de processus indépendant pour exécuter CGI Si un seul processus meurt, le système peut facilement le supprimer, puis le supprimer. réaffecter un nouveau processus pour exécuter la logique
  2. D'un point de vue sécurité, FastCGI Complètement indépendant du serveur web hôte, FastCGI n'affectera pas le fonctionnement du serveur web [Si PHP-FPM est désactivé, 502 une mauvaise passerelle sera renvoyée à l'utilisateur]
  3. Du point de vue des performances, FastCGI adopte une logique dynamique Le traitement est séparé du serveur Web et le traitement des E/S à forte charge est toujours laissé au serveur hôte, afin que le serveur hôte puisse se concentrer sur les IO. [Pour une page Web dynamique ordinaire, il peut n'y avoir qu'une petite partie du traitement logique, plus d'images, etc. Chargement des ressources statiques]

Inconvénients :

Un sous-processus fast-cgi ne peut gérer qu'une seule requête à la fois, les performances simultanées du site Web sont donc limitées par le nombre de sous-processus
Si trop de processus sont ouverts, le processeur gaspillera un beaucoup de temps sur le processus.
Chaque fois que le processus enfant fast-cgi est demandé, les ressources pertinentes doivent être rechargées et les ressources doivent être libérées une fois la demande terminée

CLI (Command Line Run/Command Line Interface)

Introduction :

le mode php-cli appartient au mode de ligne de commande. C'est le mode de fonctionnement le plus méconnu de nombreux développeurs qui viennent de le faire. a commencé à apprendre PHP et a démarré wamp et wnmp
Ce mode ne nécessite pas l'aide d'autres programmes. Vous pouvez saisir directement php xx.php pour exécuter le code php
La différence évidente entre le mode ligne de commande et le Web classique. le mode est :
Il n'y a pas de délai d'attente
Le tampon tampon est désactivé par défaut
L'utilisation des entrées/sorties/erreurs standard STDIN et STDOUT
echo var_dump, phpinfo et d'autres sorties sont directement sorties à la console
Les classes/fonctions pouvant être utilisées sont différentes
La configuration de php.ini est différente

PS : Pour plus de détails, veuillez consulter la documentation officielle : www.php.net/manual /zh/features.com...

LoadModule (exclusif à Apache)

Introduction :
Le mode module est intégré dans sous la forme du module mod_php5 À l'heure actuelle, la fonction du module mod_php5 est de recevoir les requêtes de fichiers PHP transmises par Apache, de traiter ces requêtes, puis de renvoyer les résultats traités à Apache.
Dans le fichier de configuration Apache httpd.conf, le LoadModule php7_module "D:/…/php71/php7apache2_4.dll" habituellement ajouté joue le rôle de ce

Processus d'appel :

Demande utilisateur—> Serveur Apache—> Appeler le module mod_php5 pour traiter la requête—> Renvoie le résultat de la requête à Apache—> >Illustration :


Vous faire connaître le mode de fonctionnement PHPISAPI (Interface de programme d'application du serveur Internet)

Introduction :

En PHP5 Après 3, PHP n'aura plus de mode ISAPI, et il n'y aura plus de fichier php5isapi.dll après l'installation. Pour utiliser une version supérieure de PHP sur IIS6, vous devez installer l'extension FastCGI, puis activer IIS6 pour prendre en charge FastCGI. Je n'en présenterai donc pas trop ici

Illustration :


Vous faire connaître le mode de fonctionnement PHPÉcrit à la fin :

Aujourd'hui, avec le développement explosif d'Internet, la plupart des sites Web doivent prendre en compte les performances élevées de concurrence du site Web. Nginx est de plus en plus favorisé par les développeurs en raison de sa légèreté et de ses excellentes performances de concurrence. La combinaison LAMP qui était autrefois populaire sur l'ensemble du réseau n'est plus le premier choix des développeurs PHP. La combinaison LNMP qui apparaît soudainement est devenue un cours obligatoire pour PHPer. Le modèle LoadModule basé sur Apache est de moins en moins mentionné. De plus, le mode CLI utilisé pour écrire des scripts en ligne de commande et le mode ISAPI presque disparu ne sont évidemment pas adaptés à la création de sites Web.

En tant que version améliorée de CGI, le mode Fast-CGI hérite de la simplicité et de la sécurité de CGI et utilise PHP-FPM pour gérer les processus enfants, permettant au serveur Web de se concentrer davantage sur le traitement des E/S que PHP-FPM gère et maintient. un pool de processus. , un certain nombre de processus enfants peuvent être forkés à l'avance pour attendre le traitement des requêtes. Il n'est pas nécessaire de bifurquer le processus enfant lorsque la requête arrive, ni de détruire le processus enfant lorsque la requête se termine.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer