157 votes

PHP compilé ou interprété ?

PHP compilé ou interprété ?

138voto

naixn Points 2447

Le langage PHP est interprété. Le fichier binaire qui permet d’interpréter PHP est compilé, mais ce que vous écrivez est interprétée.

Vous pouvez voir plus sur la page de wikipedia pour les langues Interpreted

76voto

Barry Brown Points 9774

Les deux. PHP est compilé vers le bas à un niveau intermédiaire du bytecode qui est ensuite interprété par le moteur d'exécution.

Le PHP compilateur du travail est d'analyser votre code PHP et de le convertir en une forme appropriée pour le moteur d'exécution. Parmi ses missions:

  • Ignorer les commentaires
  • Résoudre les variables, les noms de fonction, et ainsi de suite et créer la table des symboles
  • Construire l'arbre de syntaxe abstraite de votre programme
  • Écrire le pseudo-code

En fonction de votre configuration de PHP, cette étape est généralement fait une seule fois, la première fois que le script est appelé. La sortie du compilateur est mis en cache pour accélérer l'accès à des utilisations ultérieures. Si le script est modifié, cependant, l'étape de compilation est effectuée à nouveau.

Le moteur d'exécution des promenades de l'AST et de pseudo-code binaire lorsque le script est appelé. La table de symbole est utilisé pour stocker les valeurs des variables et de fournir le bytecode adresses pour les fonctions.

Ce processus de compilation en bytecode et de l'interpréter à l'exécution est typique pour les langues qui s'exécutent sur un type d'exécution virtuel de la machine tels que Perl, Java, Ruby, Smalltalk, et d'autres.

44voto

ssg Points 20321

Une définition d'un langage de programmation n'a pas mandat "compilé" ou "interprété" la forme même si on peut être beaucoup plus facile à mettre en œuvre en fonction de sa conception. Théoriquement, vous pouvez écrire un C interprète et d'un compilateur Python aussi.

Et "compilé/interprété" les conditions sont attribués à des choses différentes dans les réponses données à cette question. Ce que je comprends, c'est que vous demandez si Zend implémentation PHP est compilé en code natif ou non, et la réponse est non. Votre code PHP est transformé en bytecode, et interprété par un moteur, pas exécuté directement par le PROCESSEUR.

Mais plus important encore, cela ne veut pas dire grand-chose. Vous poser cette question parce que vous êtes curieux de voir une performance point. Vous voulez savoir si PHP est rapide ou lente, basée sur compilé et interprété état. C'est une erreur commune faite par les débutants. Par exemple, un mal programme compilé peut être beaucoup plus lent qu'un finement mis en œuvre interprète. Une mauvaise exécution ou d'une bibliothèque peut rendre votre code natif lent assez d'être battu par plus lent interprète.

Je suppose que votre point de vue a été la performance parce que vous avez mentionné que vous étiez un débutant mais bien sûr, vous pourriez prendre soin des autres choses aussi. Code natif rend également l'ingénierie inverse plus difficile. Cependant, je tiens à rester sur le chemin de la performance.

Code natif pour la plupart obtient utile dans le calcul. Au moment de servir les pages web si ce que vous faites n'est qu'une liste des appels système (se connecter au serveur MySQL, extraire des données, écrire des clients et la prise de courant) avec de petites logique entre les deux, l'écart de performances peuvent en fait être des petites entre les autochtones et le code compilé.

Natif de est presque toujours plus rapide, mais de tels compromis les décisions sont prises à obtenir d'autres avantages de l'interprétation, comme un déploiement plus facile/d'entretien, moins de la mémoire, de la simple compatibilité multiplate-forme, système de type dynamique, la durée d'exécution des optimisations, etc.

Comme note finale, il est un compilateur PHP appelé ssp.

17voto

Max Points 732

En général il est interprété, mais quelque temps peut l’utiliser comme mise à jour et c’est vraiment des augmentations de rendement. Outil open source pour effectuer cette opération : http://www.phpcompiler.org/

16voto

code_burgar Points 6845

PHP est un langage interprété. Il peut être compilé en bytecode par tiers-tools, cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X