Table des matières
Architecture PHP
Introduction à SAPI
CGI
FPM (FastCGI)
APACHE2HANDLER
CLI
Appelé au démarrage du module :
SAPI
Maison développement back-end PHP7 Quel est le cycle de vie de PHP7

Quel est le cycle de vie de PHP7

May 10, 2021 am 09:19 AM
php7 生命周期

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.

Quel est le cycle de vie de PHP7

Architecture PHP

Introduction à SAPI

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

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.

  • FPM (FastCGI)

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.

  • APACHE2HANDLER

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

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 :

Appelé au démarrage du module :

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); 
     …
}
Copier après la connexion

Appelé. à la fin du module :

int (*startup)(struct _sapi_module_struct *sapi_module);
Copier après la connexion

Appelé lors du traitement de la requête :

int (*shutdown)(struct _sapi_module_struct *sapi_module);
Copier après la connexion

Appelé après le traitement de la requête :

int (*activate)(void);
Copier après la connexion

SAPI

structure correspondant au CGI mode :

Cycle de vie CLI :

Structure

SAPI

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

vue3 a modifié plusieurs fonctions du cycle de vie vue3 a modifié plusieurs fonctions du cycle de vie Jan 13, 2023 pm 05:57 PM

vue3 a modifié 4 fonctions de cycle de vie. L'API combinée Vue3 annule les fonctions de hook beforeCreated et create et utilise le hook step à la place, et celui-ci ne peut pas y être utilisé. Les fonctions de hook pour la destruction des composants dans Vue3 ont été modifiées de destroy et beforeDestroy à beforeUnmount et démontées.

Comment gérer la destruction et la gestion du cycle de vie des pointeurs de fonctions C++ ? Comment gérer la destruction et la gestion du cycle de vie des pointeurs de fonctions C++ ? Apr 17, 2024 pm 05:48 PM

En C++, les pointeurs de fonction nécessitent une destruction et une gestion du cycle de vie appropriées. Ceci peut être réalisé en détruisant manuellement le pointeur de fonction et en libérant la mémoire. Utilisez des pointeurs intelligents, tels que std::unique_ptr ou std::shared_ptr, pour gérer automatiquement le cycle de vie des pointeurs de fonction. Liez le pointeur de fonction à l'objet et le cycle de vie de l'objet gère la destruction du pointeur de fonction. Dans la programmation GUI, l'utilisation de pointeurs intelligents ou la liaison à des objets garantit que les fonctions de rappel sont détruites au moment approprié, évitant ainsi les fuites de mémoire et les incohérences.

Le cycle de vie d'une servlet est divisé en plusieurs étapes Le cycle de vie d'une servlet est divisé en plusieurs étapes Feb 23, 2023 pm 01:46 PM

Le cycle de vie d'un servlet fait référence à l'ensemble du processus depuis la création jusqu'à la destruction d'un servlet, qui peut être divisé en trois étapes : 1. L'étape d'initialisation, appelant la méthode init() pour initialiser le servlet. 2. L'étape d'exécution (traitement des requêtes) ; le conteneur demandera de créer un objet ServletRequest représentant une requête HTTP et un objet ServletResponse représentant une réponse HTTP, puis les transmettra en paramètres à la méthode service() de la phase de destruction du Servlet ;

Comment résoudre le problème lorsque php7 détecte que le port TCP ne fonctionne pas Comment résoudre le problème lorsque php7 détecte que le port TCP ne fonctionne pas Mar 22, 2023 am 09:30 AM

En php5, nous pouvons utiliser la fonction fsockopen() pour détecter le port TCP. Cette fonction peut être utilisée pour ouvrir une connexion réseau et effectuer certaines communications réseau. Mais en php7, la fonction fsockopen() peut rencontrer certains problèmes, comme ne pas pouvoir ouvrir le port, ne pas pouvoir se connecter au serveur, etc. Afin de résoudre ce problème, nous pouvons utiliser la fonction socket_create() et la fonction socket_connect() pour détecter le port TCP.

Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Apr 02, 2024 pm 07:39 PM

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

Fonctions de cycle de vie dans Vue3 : maîtrisez rapidement le cycle de vie de Vue3 Fonctions de cycle de vie dans Vue3 : maîtrisez rapidement le cycle de vie de Vue3 Jun 18, 2023 am 08:20 AM

Vue3 est actuellement l'un des frameworks les plus populaires dans le monde front-end, et la fonction de cycle de vie de Vue3 est une partie très importante de Vue3. La fonction de cycle de vie de Vue3 nous permet de déclencher des événements spécifiques à des moments précis, améliorant ainsi le degré élevé de contrôlabilité des composants. Cet article explorera et expliquera en détail les concepts de base des fonctions de cycle de vie de Vue3, les rôles et l'utilisation de chaque fonction de cycle de vie, ainsi que les cas de mise en œuvre, pour aider les lecteurs à maîtriser rapidement les fonctions de cycle de vie de Vue3. 1. La fonction de cycle de vie de Vue3

Comment installer l'extension mongo dans php7.0 Comment installer l'extension mongo dans php7.0 Nov 21, 2022 am 10:25 AM

Comment installer l'extension mongo dans php7.0 : 1. Créez le groupe d'utilisateurs et l'utilisateur mongodb ; 2. Téléchargez le package de code source mongodb et placez le package de code source dans le répertoire "/usr/local/src/" ; Entrez le répertoire « src/ » ; 4. Décompressez le package de code source ; 5. Créez le répertoire de fichiers mongodb ; 6. Copiez les fichiers dans le répertoire « mongodb/ » 7. Créez le fichier de configuration mongodb et modifiez la configuration.

Comment contrôler le cycle de vie des coroutines Golang ? Comment contrôler le cycle de vie des coroutines Golang ? May 31, 2024 pm 06:05 PM

Le cycle de vie de la coroutine Go peut être contrôlé des manières suivantes : Créer une coroutine : utilisez le mot-clé go pour démarrer une nouvelle tâche. Terminez les coroutines : attendez que toutes les coroutines soient terminées, utilisez sync.WaitGroup. Utilisez les signaux de fermeture de canal. Utilisez le contexte context.Context.

See all articles