Maison  >  Article  >  développement back-end  >  Explication détaillée du fonctionnement de PHP

Explication détaillée du fonctionnement de PHP

小云云
小云云original
2018-03-15 13:05:0914875parcourir

1. Toutes les applications PHP sont complétées via un serveur WEB (tel que IIS, Nginx ou Apache) et l'interprétation et l'exécution du programme du moteur PHP. Le processus de travail :

(1) Lorsque l'utilisateur saisit l'adresse du navigateur. Saisissez le nom du fichier de la page PHP à accéder, puis déclenchez une requête web et transmettez la requête au serveur WEB.

(2) Le serveur WEB accepte cette requête et détermine qu'il s'agit d'une requête PHP en fonction de son suffixe. Le serveur WEB appelle l'application PHP à laquelle l'utilisateur souhaite accéder depuis le disque dur ou la mémoire et l'envoie. au programme du moteur PHP.

(3) Le programme du moteur PHP analysera le fichier envoyé depuis le serveur WEB du début à la fin, le lira en arrière-plan selon la commande, traitera les données et générera dynamiquement la page HTML correspondante.

(4) Le moteur PHP va générer une page HTML et la renvoyer au serveur WEB. Le serveur WEB renvoie ensuite la page HTML au navigateur client.

2. Mode de fonctionnement PHP :

1) Interface de passerelle commune cgi)

2) CGI de type fast-cgi longue durée

3) cli fonctionnement en ligne de commande (interface de ligne de commande)

4) mode module Web (mode module pour exécuter des serveurs Web tels qu'Apache)

Explication supplémentaire :

1) Mode module :

Le mode module est intégré 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, et de traiter ces requêtes, puis de renvoyer les résultats traités. à Apache. Si nous configurons le module PHP (mod_php5) dans son fichier de configuration avant le démarrage d'Apache, le module PHP enregistre le hook ap_hook_post_config d'apache2 et démarre ce module lorsque Apache commence à accepter les requêtes de fichiers PHP.

En plus de cette méthode de chargement au démarrage, les modules d'Apache peuvent être chargés dynamiquement au moment de l'exécution, ce qui signifie que le serveur peut être étendu sans avoir besoin de recompiler le code source, voire sans arrêter du tout le serveur. Il suffit d'envoyer le signal HUP ou AP_SIG_GRACEFUL au serveur pour notifier au serveur de recharger le module. Mais avant le chargement dynamique, nous devons compiler le module dans une bibliothèque de liens dynamiques. Le chargement dynamique à ce moment consiste à charger la bibliothèque de liens dynamiques. Le traitement des bibliothèques de liens dynamiques dans Apache est effectué via le module mod_so, donc le module mod_so ne peut pas être chargé dynamiquement, il ne peut être compilé que statiquement dans le noyau d'Apache. Cela signifie qu'il est démarré avec Apache.

2) Mode d'exécution de PHP dans Nginx (Nginx+ PHP-FPM)

Pour plus de détails, veuillez consulter la section Principe nginx + php

Supplément :

1. cgi, protocole fast-cgi

Historique de cgi

Le nom complet de CGI est "Common Gateway Interface", le serveur HTTP communique avec votre ou d'autres machines Un outil pour « parler » avec des programmes sur un serveur réseau, qui doivent s'exécuter sur un serveur réseau. CGI peut être écrit dans n’importe quel langage à condition que celui-ci comporte des variables d’entrée, de sortie et d’environnement standard. Tels que php, perl, tcl, etc.

Les premiers serveurs Web traitaient uniquement des fichiers statiques tels que le HTML, mais avec le développement de la technologie, des langages dynamiques​​tels que le php sont apparus. Le serveur Web ne peut pas le gérer, que dois-je faire ? Alors laissez l’interpréteur php s’en occuper ! Mais comment l’interpréteur php communique-t-il avec le serveur web ?

Afin de résoudre le problème de communication entre les différents interpréteurs de langage (tels que les interpréteurs php, python) et le serveur Web, le protocole cgi est apparu. Tant que vous écrivez un programme selon le protocole cgi, vous pouvez établir une communication entre l'interpréteur de langage et le serveur Web. Tel que le programme php-cgi.

Améliorations de fast-cgi

Avec le protocole cgi, le problème de communication entre l'interpréteur php et le serveur web est résolu, et le serveur web peut enfin gérer des langages dynamiques. Cependant, chaque fois que le serveur Web reçoit une requête, il lance un processus cgi, puis tue le processus une fois la requête terminée. S'il y a 10 000 requêtes, le processus php-cgi doit être bifurqué et tué 10 000 fois. Avez-vous déjà trouvé que c'était un gaspillage de ressources ? En conséquence, une version améliorée de cgi, fast-cgi, est apparue.

Une fois que fast-cgi a traité une requête à chaque fois, il ne tuera pas le processus, mais le conservera afin qu'il puisse gérer plusieurs requêtes à la fois. De cette façon, il n’est pas nécessaire de relancer un processus à chaque fois, ce qui améliore considérablement l’efficacité. FastCGI est une extension ouverte CGI à architecture évolutive et indépendante du langage. Son comportement principal est de conserver le processus d'interprétation 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.

2. Qu'est-ce que php-fpm

PHP-FPM est un gestionnaire PHP FastCGI, qui n'est utilisé que pour PHP. 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. 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.
Le processus comprend deux types de processus : le processus maître et le processus travailleur.
Il n'y a qu'un seul processus maître, qui est chargé d'écouter le port et de recevoir les requêtes du serveur Web. Il existe généralement plusieurs processus de travail (le nombre spécifique est configuré en fonction des besoins réels). intégré à l'intérieur, qui est PHP où le code s'exécute réellement.

Recommandations associées :

Analyse des principes de fonctionnement d'apache et 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:
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