Maison  >  Article  >  développement back-end  >  Une brève introduction à la conception sous-jacente du principe d'exécution du langage PHP7 01-PHP7

Une brève introduction à la conception sous-jacente du principe d'exécution du langage PHP7 01-PHP7

小马驹会飞
小马驹会飞original
2020-04-28 17:06:272261parcourir

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

Une brève introduction à la conception sous-jacente du principe dexécution du langage PHP7 01-PHP7

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érence

1. Chen Lei, conception sous-jacente PHP7 et implémentation du code source

2. 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!

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