Cet article vous présentera le cycle de vie de PHP7. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Définition : Interface de programmation d'applications serveur Port de programmation d'applications serveur . C'est l'interface permettant à PHP d'interagir avec d'autres applications. Les scripts PHP peuvent être exécutés de plusieurs manières, via un serveur Web, directement sur la ligne de commande ou intégrés dans d'autres programmes. SAPI fournit une interface pour la communication externe. Les SAPI courants incluent : cgi, fast-cgi, cli, dll du module Apache, etc.
CGI est une interface de passerelle commune (common gatewag interface). En termes simples, CGI est comme un programme. bridge. , connecte la page Web et le programme d'exécution dans le serveur WEB, il transmet les instructions reçues par le HTML au programme d'exécution du serveur, puis renvoie les résultats du programme d'exécution du serveur à la page HTML. CGI est extrêmement multiplateforme et peut être implémenté sur presque tous les systèmes d'exploitation.
Lorsque la méthode CGI rencontre une demande de connexion (demande utilisateur), elle doit d'abord créer un sous-processus cgi, activer un processus CGI, puis traiter la demande, et terminer le sous-processus après traitement. Il s’agit du modèle fork-and-execute. Par conséquent, un serveur utilisant CGI aura autant de sous-processus CGI qu'il y a de demandes de connexion. Le chargement répété de sous-processus est la principale raison des faibles performances CGI. Lorsque le nombre de requêtes utilisateur est très important, une grande quantité de ressources système telles que la mémoire, le temps CPU, etc. sera occupée, ce qui entraînera de faibles performances.
fast-cgi est une version améliorée de cgi, FastCGI est comme un type CGI de longue durée qui peut être exécuté tout le temps. Tant qu'il est activé, il ne faudra pas de temps pour bifurquer à chaque fois. PHP utilise PHP-FPM (FastCGI Process Manager), le nom complet de PHP FastCGI Process Manager, pour la gestion.
Le gestionnaire de processus FastCGI (IIS ISAPI ou Apache Module) est chargé au démarrage du serveur Web. Le gestionnaire de processus FastCGI s'initialise, démarre plusieurs processus interpréteurs CGI (visibles plusieurs php-cgi) et attend les connexions 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.
PHP en tant que module Apache, le serveur Apache pré-génère plusieurs copies de processus pour résider dans la mémoire après le démarrage du système. Lorsqu'une requête se produit, ces sous-processus inactifs sont immédiatement utilisés pour le traitement, de sorte qu'il n'y a aucun retard causé par la génération de sous-processus. Ces copies du serveur ne se ferment pas immédiatement après le traitement d'une requête HTTP, mais restent sur l'ordinateur en attendant la requête suivante. La réponse aux requêtes du navigateur client est plus rapide et les performances sont plus élevées.
cli est le mode d'exécution en ligne de commande de php. Vous l'utilisez souvent, mais vous ne le remarquez peut-être pas (par exemple : Sous Linux, "php -m" est souvent utilisé pour rechercher les extensions installées par PHP, qui est le mode d'exécution de la ligne de commande PHP :
struct _sapi_module_struct { char *name; char *pretty_name; int (*startup)(struct _sapi_module_struct *sapi_module); int (*shutdown)(struct _sapi_module_struct *sapi_module); int (*activate)(void); int (*deactivate)(void); size_t (*ub_write)(const char *str, size_t str_length); void (*flush)(void *server_context); … }
Appelé. à la fin du module :
int (*startup)(struct _sapi_module_struct *sapi_module);
Appelé lors du traitement de la requête :
int (*shutdown)(struct _sapi_module_struct *sapi_module);
Appelé après le traitement de la requête :
int (*activate)(void);
SAPI
structure correspondant au CGI mode :
Cycle de vie CLI :Structure
correspondant au mode FPM :
Vie cycle du mode FPM :
Apprentissage recommandé : tutoriel vidéo php
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!