Maison >développement back-end >tutoriel php >Explication détaillée des exemples de principes sous-jacents de PHP

Explication détaillée des exemples de principes sous-jacents de PHP

小云云
小云云original
2018-03-14 14:35:401745parcourir

J'utilise LAMP ou LNMP depuis longtemps, alors comment fonctionnent les lampes ou comment sont-elles connectées ? En général, je me contente d'écrire des programmes et je pense rarement à leurs principes de fonctionnement : cet article partage principalement avec vous la couche inférieure de PHP Explication détaillée du principe et exemples, j'espère que cela pourra aider tout le monde.

Le principe de fonctionnement sous-jacent de PHP

Explication détaillée des exemples de principes sous-jacents de PHP
Figure 1 Structure PHP

Comme le montre la figure, PHP est un système à 4 couches de de bas en haut

①Zend Engine

Zend est entièrement implémenté en C pur et constitue la partie centrale de PHP. Il traduit le code PHP (lexical, analyse syntaxique et une série de processus de compilation) en exécutable. Traitement et implémentation de l'opcode Les méthodes de traitement correspondantes, l'implémentation des structures de données de base (telles que la table de hachage, oo), l'allocation et la gestion de la mémoire et la fourniture des méthodes API correspondantes pour les appels externes sont au cœur de tout. Toutes les fonctions périphériques sont implémentées autour de zend.

②Extensions

Tournant autour du moteur zend, les extensions fournissent divers services de base basés sur des composants nos diverses fonctions intégrées communes (telles que les séries de tableaux), nos bibliothèques standard, etc. sont tous via des extensions Pour y parvenir, les utilisateurs peuvent également implémenter leurs propres extensions si nécessaire pour réaliser l'expansion des fonctions, l'optimisation des performances et à d'autres fins (par exemple, la couche intermédiaire PHP et l'analyse de texte enrichi actuellement utilisées par Tieba sont des applications typiques des extensions).

③Sapi

Le nom complet de Sapi est Server Application Programming Interface, qui est l'interface de programmation d'applications serveur qui permet à PHP d'interagir avec les données périphériques via une série de fonctions de hook. Une conception élégante et réussie découple et isole avec succès PHP lui-même des applications de couche supérieure via SAPI. PHP ne peut plus réfléchir à la manière d'être compatible avec différentes applications, et l'application elle-même peut également implémenter différentes méthodes de traitement en fonction de ses propres caractéristiques. Nous présenterons l'application de couche supérieure

④ dans le chapitre sapi plus tard

Il s'agit du programme PHP que nous écrivons habituellement. Nous pouvons obtenir différents modes d'application via différentes méthodes sapi, telles que l'implémentation du Web via. serveur Web Appliquer, exécuter en tant que script à partir de la ligne de commande, etc.

Idées architecturales :

Le modèle moteur (Zend) + composant (ext) réduit le couplage interne

La couche intermédiaire (sapi) isole le serveur web et php


Si php est une voiture, alors

Le framework de la voiture est php lui-même

Zend est le moteur de la voiture (moteur)

Le divers composants ci-dessous Ext Ce sont les roues d'une voiture

Sapi peut être considéré comme une route, et les voitures peuvent rouler sur différents types de routes

Et l'exécution d'un programme php signifie que la voiture court sur la route.

Par conséquent, nous avons besoin de : un moteur d'excellentes performances + des roues adaptées + une piste correcte

La relation entre Apache et php

Apache analyse php à travers de nombreux modules Cela se fait en utilisant le php Module dedans.

Explication détaillée des exemples de principes sous-jacents de PHP
Pour enfin intégrer php dans le système Apache, vous devez effectuer certains réglages nécessaires pour Apache. Ici, nous prendrons le mode de fonctionnement mod_php5 SAPI de php comme exemple pour expliquer Quant au concept de SAPI, nous l'expliquerons en détail plus tard.

Supposons que les versions que nous installons sont Apache2 et Php5, vous devez alors éditer le fichier de configuration principal d'Apache http.conf et y ajouter les lignes suivantes :

Dans l'environnement Unix/Linux :

LoadModule php5_module modules/mod_php5.so

AddType application/x-httpd-php .php

Remarque : modules/mod_php5.so est mod_php5.so dans l'environnement système X. emplacement où le fichier est installé.

Dans l'environnement Windows :

LoadModule php5_module d:/php/php5apache2.dll

AddType application/x-httpd-php .php

Remarque : Parmi eux, d:/php/php5apache2.dll est l'emplacement d'installation du fichier php5apache2.dll dans l'environnement Windows.

Ces deux configurations indiquent au serveur Apache que toute demande d'utilisateur d'URL reçue dans le futur, avec php comme suffixe, doit appeler le module php5_module (mod_php5.so/php5apache2.dll) pour être traitée.

Cycle de vie d'Apache

Explication détaillée des exemples de principes sous-jacents de PHP
Processus de traitement des demandes d'Apach
Explication détaillée des exemples de principes sous-jacents de PHP

Explication détaillée du cycle de traitement des demandes d'Apache

Quoi sont effectués dans les 11 étapes du cycle de traitement des requêtes Apache ?

1 Phase post-lecture-requête

Dans le processus normal de traitement des requêtes, c'est la troisième étape où le module peut insérer. accroche une scène. Cette étape peut être exploitée pour les modules souhaitant se lancer très en amont dans le traitement des requêtes.

2. Phase de traduction de l'URI

Le travail principal d'Apache dans cette phase est de mapper l'URL demandée au système de fichiers local. Les modules peuvent insérer des hooks à ce stade pour exécuter leur propre logique de mappage. mod_alias utilise cette phase pour fonctionner.

3. Phase d'analyse de l'en-tête

Le travail principal d'Apache dans cette phase est de vérifier l'en-tête de la requête. Étant donné que le module peut effectuer la tâche de vérification des en-têtes de requête à tout moment du flux de traitement de la requête, ce hook est rarement utilisé. mod_setenvif utilise cette phase pour fonctionner.

4. Étape de contrôle d'accès

Tâche principale d'Apache à ce stade : Vérifier si l'accès à la ressource demandée est autorisé selon le fichier de configuration. La logique standard d'Apache implémente les directives d'autorisation et de refus. mod_authz_host utilise cette phase pour fonctionner.

5. Phase d'authentification

Le travail principal d'Apache dans cette phase : authentifier les utilisateurs selon la politique définie dans le fichier de configuration et définir la zone du nom d'utilisateur. Les modules peuvent insérer des hooks à ce stade pour implémenter une méthode d'authentification.

6. Phase d'autorisation

La tâche principale d'Apache dans cette phase est de vérifier si les utilisateurs authentifiés sont autorisés à effectuer l'opération demandée en fonction du fichier de configuration. Le module peut insérer des hooks à ce stade pour mettre en œuvre une méthode de gestion des droits des utilisateurs.

7. Phase de vérification du type MIME

Le travail principal d'Apache dans cette phase : déterminer la fonction de traitement de contenu à utiliser en fonction des règles pertinentes du type MIME de la ressource demandée. Les modules standards mod_negotiation et mod_mime implémentent ce hook.

8. Phase FixUp

Il s'agit d'une phase générale qui permet au module d'exécuter tout traitement nécessaire avant le générateur de contenu. Semblable à Post_Read_Request, il s'agit d'un hook qui peut capturer n'importe quelle information et est également le hook le plus couramment utilisé.

9. Phase de réponse

Le travail principal d'Apache dans cette phase est de générer le contenu renvoyé au client et d'être responsable de l'envoi d'une réponse appropriée au client. Cette étape est la partie centrale de l’ensemble du processus.

10. Phase de journalisation

Le travail principal d'Apache dans cette phase : enregistrer les transactions après l'envoi de la réponse au client. Les modules peuvent modifier ou remplacer la journalisation standard d'Apache.

11. Phase de nettoyage

Le travail principal d'Apache dans cette phase : nettoyer l'environnement laissé après la réalisation de cette transaction de requête, comme le traitement des fichiers et répertoires ou la fermeture de Socket, etc. C'est la dernière étape du traitement d'une requête par Apache.

Architecture LAMP :

Explication détaillée des exemples de principes sous-jacents de PHP
Quatre couches de bas en haut :

①liunx appartient à la couche inférieure du système d'exploitation

②Le serveur Apache, qui appartient au serveur secondaire, communique avec Linux et PHP

③php : Il appartient au langage de programmation côté serveur, et est associé à Apache via le module php_module

. Diagramme d'architecture du système Android

Comparez le diagramme d'architecture de la lampe et d'Android. Cela semble être quelque peu similaire à l'architecture de la lampe. Je ne comprends pas Android, mais cela semble un peu similaire. . Merci beaucoup

De haut en bas : Explication détaillée des exemples de principes sous-jacents de PHP
Architecture Android——————Explication————Architecture LAMP

1 . Programme d'application——Application spécifique——application Web

2. Cadre d'application——java————Langage et bibliothèque PHP

3. Serveur WEB

⒋Noyau Linux : —Système d'exploitation —-L

dans l'architecture de la lampe utilise LAMP ou LNMP depuis longtemps, alors comment fonctionnent les lampes, ou Comment sont-elles connectées ? En général, j'écris simplement des programmes et je pense rarement aux principes de fonctionnement entre eux :

Le principe de fonctionnement sous-jacent de PHP

Figure 1 Structure PHPExplication détaillée des exemples de principes sous-jacents de PHP
Comme Comme le montre l'image, PHP est un système à 4 couches de bas en haut

①Moteur Zend

Zend est implémenté en C pur et constitue la partie centrale de la traduction de code PHP (un. série de processus de compilation tels que l'analyse lexicale et syntaxique) traite les opcodes exécutables et implémente les méthodes de traitement correspondantes, implémente les structures de données de base (telles que la table de hachage, oo), l'allocation et la gestion de la mémoire, et fournit les méthodes API correspondantes pour les appels externes. au cœur de tout, et toutes les fonctions périphériques sont implémentées autour de zend.

②Extensions

Tournant autour du moteur zend, les extensions fournissent divers services de base basés sur des composants nos diverses fonctions intégrées communes (telles que les séries de tableaux), nos bibliothèques standard, etc. sont tous via des extensions Pour y parvenir, les utilisateurs peuvent également implémenter leurs propres extensions si nécessaire pour réaliser l'expansion des fonctions, l'optimisation des performances et à d'autres fins (par exemple, la couche intermédiaire PHP et l'analyse de texte enrichi actuellement utilisées par Tieba sont des applications typiques des extensions).

③Sapi

Le nom complet de Sapi est Server Application Programming Interface, qui est l'interface de programmation d'applications serveur qui permet à PHP d'interagir avec les données périphériques via une série de fonctions de hook. Une conception élégante et réussie découple et isole avec succès PHP lui-même des applications de couche supérieure via SAPI. PHP ne peut plus réfléchir à la manière d'être compatible avec différentes applications, et l'application elle-même peut également implémenter différentes méthodes de traitement en fonction de ses propres caractéristiques. Nous présenterons l'application de couche supérieure

④ dans le chapitre sapi plus tard

Il s'agit du programme PHP que nous écrivons habituellement. Nous pouvons obtenir différents modes d'application via différentes méthodes sapi, telles que l'implémentation du Web. via le serveur Web Appliquer, exécuter en tant que script à partir de la ligne de commande, etc.

Idées architecturales :

Le modèle moteur (Zend) + composant (ext) réduit le couplage interne

La couche intermédiaire (sapi) isole le serveur web et php

Si php est une voiture, alors

Le framework de la voiture est le php lui-même

Zend est le moteur de la voiture (engine)

Les différents composants ci-dessous Ext sont les roues de la voiture

Sapi peut être vu comme des routes, les voitures peuvent rouler sur différents types de routes

Et l'exécution d'un programme php signifie que la voiture roule sur la route.

Par conséquent, nous avons besoin de : un moteur d'excellentes performances + des roues adaptées + une piste correcte

La relation entre Apache et php

Apache analyse php à travers de nombreux modules Cela se fait en utilisant le php Module.

Explication détaillée des exemples de principes sous-jacents de PHP
Pour enfin intégrer php dans le système Apache, vous devez effectuer certains réglages nécessaires pour Apache. Ici, nous prendrons le mode de fonctionnement mod_php5 SAPI de php comme exemple pour expliquer Quant au concept de SAPI, nous l'expliquerons en détail plus tard.

Supposons que les versions que nous installons sont Apache2 et Php5, vous devez alors éditer le fichier de configuration principal d'Apache http.conf et y ajouter les lignes suivantes :

Dans l'environnement Unix/Linux :

LoadModule php5_module modules/mod_php5.so

AddType application/x-httpd-php .php

Remarque : modules/mod_php5.so est mod_php5.so dans l'environnement système X. emplacement où le fichier est installé.

Dans l'environnement Windows :

LoadModule php5_module d:/php/php5apache2.dll

AddType application/x-httpd-php .php

Remarque : Parmi eux, d:/php/php5apache2.dll est l'emplacement d'installation du fichier php5apache2.dll dans l'environnement Windows.

Ces deux configurations indiquent au serveur Apache que toute demande d'utilisateur d'URL reçue dans le futur, avec php comme suffixe, doit appeler le module php5_module (mod_php5.so/ php5apache2.dll) pour être traitée.

Cycle de vie d'Apache

Explication détaillée des exemples de principes sous-jacents de PHP
Processus de traitement des demandes d'Apach
Explication détaillée des exemples de principes sous-jacents de PHP

Explication détaillée du cycle de traitement des demandes d'Apache

Quoi sont effectués dans les 11 étapes du cycle de traitement des requêtes Apache ?

1 Phase post-lecture-requête

Dans le processus normal de traitement des requêtes, c'est la troisième étape où le module peut insérer. accroche une scène. Cette étape peut être exploitée pour les modules souhaitant se lancer très en amont dans le traitement des requêtes.

2. Phase de traduction de l'URI

Le travail principal d'Apache dans cette phase est de mapper l'URL demandée au système de fichiers local. Les modules peuvent insérer des hooks à ce stade pour exécuter leur propre logique de mappage. mod_alias utilise cette phase pour fonctionner.

3. Phase d'analyse de l'en-tête

Le travail principal d'Apache dans cette phase est de vérifier l'en-tête de la requête. Étant donné que le module peut effectuer la tâche de vérification des en-têtes de requête à tout moment du flux de traitement de la requête, ce hook est rarement utilisé. mod_setenvif utilise cette phase pour fonctionner.

4. Phase de contrôle d'accès

Le travail principal d'Apache dans cette phase : Vérifier si l'accès à la ressource demandée est autorisé selon le fichier de configuration. La logique standard d'Apache implémente les directives d'autorisation et de refus. mod_authz_host utilise cette phase pour fonctionner.

5. Phase d'authentification

Le travail principal d'Apache dans cette phase : authentifier les utilisateurs selon la politique définie dans le fichier de configuration et définir la zone du nom d'utilisateur. Les modules peuvent insérer des hooks à ce stade pour implémenter une méthode d'authentification.

6. Phase d'autorisation

La tâche principale d'Apache dans cette phase est de vérifier si les utilisateurs authentifiés sont autorisés à effectuer l'opération demandée en fonction du fichier de configuration. Le module peut insérer des hooks à ce stade pour mettre en œuvre une méthode de gestion des droits des utilisateurs.

7. Phase de vérification du type MIME

Le travail principal d'Apache dans cette phase : déterminer la fonction de traitement de contenu à utiliser en fonction des règles pertinentes du type MIME de la ressource demandée. Les modules standards mod_negotiation et mod_mime implémentent ce hook.

8. Phase FixUp

Il s'agit d'une phase générale qui permet au module d'exécuter tout traitement nécessaire avant le générateur de contenu. Semblable à Post_Read_Request, il s'agit d'un hook qui peut capturer n'importe quelle information et est également le hook le plus couramment utilisé.

9. Phase de réponse

Le travail principal d'Apache dans cette phase est de générer le contenu renvoyé au client et d'être responsable de l'envoi d'une réponse appropriée au client. Cette étape est la partie centrale de l’ensemble du processus.

10. Phase de journalisation

Le travail principal d'Apache dans cette phase : enregistrer les transactions après l'envoi de la réponse au client. Les modules peuvent modifier ou remplacer la journalisation standard d'Apache.

11. Phase de nettoyage

Le travail principal d'Apache dans cette phase : nettoyer l'environnement laissé après la réalisation de cette transaction de requête, comme le traitement des fichiers et répertoires ou la fermeture de Socket, etc. C'est la dernière étape du traitement d'une requête par Apache.

Architecture LAMP :

Explication détaillée des exemples de principes sous-jacents de PHP
Quatre couches de bas en haut :

①liunx appartient à la couche inférieure du système d'exploitation

②Le serveur Apache, qui appartient au serveur secondaire, communique entre Linux et PHP

③php : C'est un langage de programmation côté serveur et est associé à Apache via le module php_module

④mysql et autres services Web : appartiennent aux services d'application et sont associés à mysql via le module de plug-in Extensions de PHP

Schéma d'architecture du système Android

Comparez le schéma d'architecture de Lamp et Android , cela semble être similaire à la lampe. L'architecture est quelque peu similaire. Je ne comprends pas Android, mais cela semble un peu similaire. Les experts peuvent souligner les différences, je serais très reconnaissant.

De haut en bas :

Explication détaillée des exemples de principes sous-jacents de PHPArchitecture Android ——————Description——–Architecture LAMP

Application——–Application spécifique——–Application web

2. Framework applicatif——java————- Langage et bibliothèque PHP

3. Bibliothèque d'exécution système : — Machine virtuelle — Serveur WEB

⒋Noyau Linux : — Système d'exploitation — L en architecture de lampe

Recommandations associées :

Explication du mécanisme de fonctionnement sous-jacent et des principes de PHP

Analyse du PHP sous-jacent : Forum de couleurs gagnantes plurielles ww7349cow à propos de la copie sur écriture de la vache vache du Japon vache lait pierre

Compréhension approfondie du mécanisme sous-jacent du didacticiel PHP_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