Maison >développement back-end >PHP7 >Une brève introduction à la conception sous-jacente du principe d'exécution du langage PHP7 01-PHP7
PHP est un langage interprété. Contrairement aux langages compilés, le résultat de la compilation est que l'instruction du système CPU actuel ne peut être directement exécutée par la machine virtuelle zend que si elle est compilée en opcode.
Ce qui suit est une brève description du principe d'exécution du langage PHP7 :
1 Le code source utilise d'abord l'analyseur lexical implémenté par Re2c pour l'analyse lexicale, et coupe. le code source en plusieurs unités String, la chaîne divisée est appelée Token
2. L'analyseur de syntaxe implémenté sur la base de Bison génère un arbre syntaxique abstrait à partir de Token et de code conforme aux règles de grammaire BNF
3. L'arbre de syntaxe abstraite (AST) est compilé pour générer un opcode Le langage interprété dont nous discutons souvent a une faible efficacité d'exécution car il y a plus d'opcodes traduits pendant PHP ; processus d’exécution. Non seulement cela, contrairement à Java et à d'autres langages qui résident en mémoire, la mémoire sera libérée immédiatement après l'exécution du code PHP, et fondamentalement toutes les données seront détruites à ce moment (seulement un très une petite quantité de données sera mise en cache). L'avantage de ce mécanisme d'exécution est qu'il évite efficacement les fuites de mémoire et que le mécanisme de recyclage de la mémoire est plus simple. L'inconvénient est que chaque requête PHP doit répéter le processus de traduction-exécution de la requête. Remarque : la fuite de mémoire fait référence à la mémoire tas allouée dynamiquement dans le programme qui n'est pas libérée ou ne peut pas être libérée pour une raison quelconque, provoquant un gaspillage de mémoire système, provoquant un ralentissement du programme ou même un crash du système. .Attendez des conséquences graves. Afin de compenser le défaut de ne pas être résident en mémoire, le cache opcode est introduit. La machine virtuelle zend met en cache le résultat de la compilation du code PHP de la première exécution dans la mémoire ou le disque dur, et lit. le cache directement la prochaine fois que cette partie du code est exécutée, ce qui peut améliorer la vitesse d'exécution de PHP dans une certaine mesure.Documents de référence1. Chen Lei, conception sous-jacente PHP7 et implémentation du code source2. Lie Xusong, Chen Wen, technologie de base PHP et meilleures pratiques<.>
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!