Maison développement back-end tutoriel php Explication détaillée du mécanisme de fonctionnement sous-jacent et des principes de fonctionnement de PHP

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

Aug 04, 2020 pm 03:41 PM
php 底层原理 运行机制

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

J'ai récemment installé un serveur, et du coup j'ai senti comment fonctionnent les lampes ou comment elles sont connectées ? En général, j'écris simplement des programmes et je n'ai jamais pensé aux principes de fonctionnement entre eux :

Le principe de fonctionnement sous-jacent de PHP

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

Figure 1 Structure PHP

Comme le montre l'image , php De bas en haut, c'est un système à 4 couches

①Moteur Zend

Zend est entièrement implémenté en C pur et est la partie centrale de PHP Il traduit le code PHP (lexical, analyse syntaxique, etc.) Processus) 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. 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 web serveur et php

***************************************** ******* *******************************

Si php est une voiture, puis
la voiture Le framework est PHP lui-même
Zend est le moteur de la voiture
Les différents composants sous Ext sont les roues de la voiture
Sapi peut être considéré comme une route, et la voiture peut rouler sur différents types de routes
L'exécution d'un programme PHP est une voiture qui roule sur la route.
Il nous faut donc : un moteur d'excellentes performances + des roues adaptées + une piste correcte

La relation entre Apache et php

Apache L'analyse de php est complété via le module php parmi de nombreux modules.

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
Copier après la connexion

Remarque : modules/mod_php5.so est l'emplacement d'installation du fichier mod_php5.so dans l'environnement système X.

Dans l'environnement Windows :

LoadModule php5_module d:/php/php5apache2.dll
AddType application/x-httpd-php .php
Copier après la connexion

Remarque : 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

Processus de traitement des requêtes d'Apache

Explication détaillée du cycle de traitement des requêtes Apache

Les 11 étapes du cycle de traitement des requêtes Apache ont été fait Quelles choses ?

1. Étape post-lecture-demande
Dans le processus normal de traitement des requêtes, il s'agit de la première étape où le module peut insérer des hooks. 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. Étape d'analyse de l'en-tête
Le travail principal d'Apache dans cette étape : 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
La tâche principale d'Apache dans cette phase est de vérifier si l'accès à la ressource demandée est autorisé en fonction du 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. Étape d'authentification
Le travail principal d'Apache dans cette étape : 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. Étape FixUp
Il s'agit d'une étape 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 restant après la fin de cette transaction de requête, comme le traitement des fichiers et des répertoires ou la fermeture des Sockets, etc. C'est la première fois qu'Apache est la dernière étape du traitement des demandes.

Architecture LAMPE :

Quatre couches de bas en haut :

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

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

③php : il appartient au langage de programmation côté serveur et est associé avec 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 de l'architecture du système Android

architecture de la lampe et d'Android En comparant les images, cela semble être quelque peu similaire à l'architecture de la lampe. Je ne connais pas Android, mais les experts peuvent souligner le côté. différences. Je serais très reconnaissant

De haut en bas Suivant :

Architecture Android-------------- Description-------Architecture LAMP

1. Application----- ---Application spécifique--------application Web

2. ----java-------------Langage et bibliothèque PHP

3. Bibliothèque d'exécution du système :----Machine virtuelle--------WEB serveur

⒋Noyau Linux :---Système d'exploitation-------Architecture de la lampe La relation entre L

lampe et l'intérieur de l'ordinateur

Le CPU est l'usine, le disque dur est le grand entrepôt et la mémoire est le centre de transfert formel, la mémoire virtuelle est un centre de transfert temporaire

Langage PHP est compilé en langage machine par zend, et le fonctionnement du CPU

sur la base de données est une opération d'E/S et un mouvement mécanique, c'est-à-dire un site Web Le goulot d'étranglement est causé par la lecture et l'écriture du disque dur. La solution consiste à réduire le nombre d'opérations d'E/S et à utiliser la technologie de mise en mémoire tampon. Autrement dit, les opérations de données sont placées dans le mencache lorsqu'elles atteignent un certain ordre de grandeur, elles sont écrites dans la base de données. une fois. Le mencache appartient à la relation clé.--valeur

Les données non relationnelles sont également construites sur la base de ce concept, et elles appartiennent également à la relation clé--valeur

Opération de lecture fréquente. ------Mettez-le dans mencache

Lisez plus et écrivez moins ----mettez-le dans nosql------la fonction de lecture est très puissante !

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)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles