Avec le développement rapide d'Internet, PHP, en tant que langage de script côté serveur populaire, a été largement utilisé dans divers projets de développement. Cependant, de nombreux développeurs connaissent très peu le mécanisme de travail interne de PHP. Cet article fournira un guide débutant aux développeurs qui souhaitent acquérir une compréhension approfondie du noyau PHP, qui vous mènera pour explorer les mystères du noyau PHP à partir de zéro.
Le processus de compilation de PHP convertit d'abord le code source en jetons via un lexer, qui convertit ensuite ces jetons en arbres de syntaxe abstraits (AST), et génère enfin du code machine exécutable par l'interprète ou le compilateur.
L'exécution de PHP est divisée en deux étapes: exécution d'interprétation et exécution de compilation. Pendant la phase d'exécution d'interprétation, PHP analyse la ligne de code source par ligne et effectue les opérations correspondantes. Dans l'étape de compilation et d'exécution, le code source sera converti en code intermédiaire (OPCode) et stocké en mémoire pour améliorer l'efficacité de l'exécution.
Le moteur Zend est le cœur du noyau PHP, qui est responsable de la conversion du code source PHP en code intermédiaire et de son exécution. En tant que moteur d'exécution de PHP, le moteur Zend est l'âme du langage PHP.
Le noyau PHP possède un puissant mécanisme de gestion de la mémoire, qui est utilisé pour gérer efficacement l'allocation et le recyclage de structures de données telles que les variables, les fonctions et les classes.
Le noyau PHP prend en charge les mécanismes d'extension, permettant aux développeurs de créer des modules d'extension personnalisés pour améliorer la fonctionnalité PHP. Les extensions peuvent être chargées ou désinstallées dynamiquement et peuvent appeler des fonctions internes PHP.
Le noyau PHP alloue la mémoire pour chaque variable et libère la mémoire lorsque la variable n'est plus utilisée. L'exemple de code suivant montre comment PHP crée et détruit les variables:
<?php $a = "Hello"; // Créer une variable de chaîne unset($a); // Détruire les variables ?>
PHP utilise un mécanisme de comptage de référence pour suivre le nombre de références d'une variable. Lorsqu'une variable est référencée, le nombre de références augmente; Lorsqu'il n'y a pas de référence, le nombre de références diminue. Ce n'est que lorsque le nombre de références est nul, PHP libérera l'espace mémoire correspondant. Les exemples sont les suivants:
<?php $a = "Hello"; // Créer une variable de chaîne $b = $a; // L'attribution entre les variables est une passe de référence unset($a); // Détruire les variables ?>
En plus du comptage de référence, le noyau PHP implémente également un mécanisme de collecte des ordures pour libérer périodiquement un espace mémoire inutile. Le collecteur des ordures analyse la mémoire, détermine les variables qui ne sont plus utilisées et libèrent sa mémoire.
Cet article présente brièvement les concepts de base du développement sous-jacent PHP7 et se concentre sur la structure du noyau PHP et du mécanisme de gestion de la mémoire. J'espère que ces contenus pourront aider les développeurs à comprendre les principes de travail sous-jacents du PHP et à stimuler leur intérêt à explorer davantage le noyau PHP.