Php compilé ou interpreté [Fermé]

Signaler
-
 abriotde -
Allo!
J'aimerais savoir si PHP est un langage compilé ou un langage interpreté? Merci d'avance.

12 réponses

Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 286
Bonjour,

PHP n'est pas compilé au sens 'compilation comme en C'

PHP est 'tokenisé', c'est à dire que l'analyseur syntaxique convertit chaque instruction texte en un lien direct vers la procédure exécutable. En fait le moteur PHP traduit le code source texte en un pseudo-code et mémorise ce code pendant un certain temps... Ce temps dépend de la capacité mémoire du serveur et la répétition des appels à ce script pseudo-compilé.

La pseudo-compilation par token a été mise en oeuvre très tôt dans différents langages de programmation, dont le BASIC sur certaines machines, Nantucket Compiler pour dBASE, etc... Le langage FORTH est un vrai compilateur totalement atypique qui reste interpréteur et compilateur et crée un code exécutable en une passe.

Les vrais compilateurs utilisent toujours le cycle ELCR (Edit -> Link -> Compile and Run). C'est le cas de C, PASCAL, etc... Le code source est traduit en une sorte de grille de liens vers une librairie, le compilateur final va agréger cette grille de liens se référant aux librairies pour générer un code exécutable indépendant du code source.

En ce sens, un programme écrit en PHP ne peut fonctionner sans son code source. Les mécanismes intimes de PHP détectent toute modification de ce code source. Le code est recompilé s'il n'y a pas d'image compilée en mémoire ou qu'une modification récente est intervenue. En fonctionnement normal, un script compilé reste en mémoire tant qu'il est utilisé pendant un certains laps de temps. Je n'ai pas de connaissance plus précise sur cette gestion de la mémoire par PHP. Mais l'incidence sur les performances d'un script font que tout script qui n'a pas été exécuté pendant un temps assez long (en général au-delà de quelques minutes...) doit être rechargé et re-compilé. Cette opération influe sur le temps d'exécution du script en question. Si on le réexécute immédiatement dans la foulée, il s'exécutera plus rapidement.

En celà, le modèle de programmation MVC offre certains avantages. Ainsi, des composants tels un framework (Zend Framework par exemple) seront persistants en mémoire sur le serveur. Tout script faisant appel à ce framework aura d'autant moins de code à re-compiler, donc s'exécutera beaucoup plus rapidement qu'un script qui embarque sa propre librairie de fonctions.

Sur des serveurs à très forte charge, le moteur PHP va gérer les scripts de nombreux 'clients'. Le délai de persistance d'une version compilée d'un script PHP peut être très court. Parfois moins de quelques secondes. Si on privilégie une programmation de type MVC (modèle -vue-contrôleur) et des librairies de fonctions mutualisées (classes applicatives et framework), on a un gain de performances:
- scripts plus simples,
- librairies persistantes en version compilées

Voilà. J'espère avoir été assez clair...

Un article intéressant sur ce sujet:
http://unearaigneeauplafond.fr/php-langage-interprete-compile/

A+
11
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


Pour répondre correctement et éviter aux futurs visiteurs de se méprendre
Le langage PHP est un langage compilé "à la volée". Pour en savoir plus sur son fonctionnement rendez-vous à l'adresse suivante : http://unearaigneeauplafond.fr/php-langage-interprete-compile
Eh bien, vous vous trompez, il s'agit d'un langage compilé à la volée, donnant l'illusion d'un langage interprété...
Mais il est est compilé au moment de l'execution, puis l'executable resultant du script est détruit.

Allez comprendre la logique, mais ça marche, et on lui en demandera pas plus...

:D
J'interviens tardivement sur le sujet (car il est très bien référencé) :
PHP5 est base sur une machine virtuelle.
Le code est précompilé en byte code (code intermédiaire) puis envoyé a la machine virtuelle pour exécution.

Message en QWERTY => pas d'accents.
Messages postés
18535
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
4 278
Alors même Wikipedia à faux ?!
PHP (sigle de PHP: Hypertext Preprocessor[3]), est un langage de scripts libre[4] principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP[3], mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet complètes[5]. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.
Messages postés
284
Date d'inscription
vendredi 13 août 2010
Statut
Membre
Dernière intervention
8 juillet 2020
94
Wikipédia n'est pas infaillible et les erreurs arrivent souvent ...
Non wikipedia n'a pas faux. PHP est interprété mais compilé en live en bytecode. La frontière entre language interprété et compilé n'est plus si étendu qu'elle l'a été. La différence essentiel est que dans le language interprété on ne voit pas la compilation et en conséquence on ne peux pas optimiser autant. Même jevascript est compilé dans les navigateurs moderne (Chrome l'a introduit)
PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java.
c'est un langage interprété...

Définitivement interpreté... :)

Kalamit,
Veni, vidi, reparti... :o)
Messages postés
33478
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 766
Ben non si c'est interprete il y a rien de definitif :o)

.  .
\_/
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
112
Bof teebo :)

@++
Poster, poster encore et toujours :-)
J'interviens tardivement sur le sujet (car il est très bien référencé) :
PHP5 est base sur une machine virtuelle.
Le code est précompilé en byte code (code intermédiaire) puis envoyé a la machine virtuelle pour exécution (interprétation).

Message en QWERTY => pas d'accents.
Enfin PHP est devenu compilé à la source! et ce de chez Facebook :
http://www.indexel.net/article/facebook-veut-reecrire-le-langage-php-3028.html