PRATIQUE PHP 
Expliquez-moi… Le fonctionnement de l'interpréteur PHP
 
Comment les codes PHP se transforment-ils en code HTML ? Les dessous du traitement des pages dynamiques. (13/03/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

Un serveur Web fonctionne sur un principe simple : lorsqu'il reçoit une requête pour une ressource, il vérifie si celle-ci est disponible, et si c'est le cas il renvoie simplement cette ressource vers le logiciel client. La plupart des fichiers stockés sur un serveur sont statiques : document CSS, HTML ou PDF sont envoyés tels quels, sans aucune modification de la part du serveur.

Il n'en est pas de même pour les fichiers utilisant PHP, ASP, JSP, ColdFusion ou autres technologies serveur. Dans ce cas, le travail demandé au serveur est plus fourni. Voici dans ce qui suit le déroulement de ce traitement dans le cas d'un fichier PHP. Notons que les autres langages disposent de spécificités, mais que le plus gros du traitement d'une page dynamique reste le même.

Un langage interprété requiert, vous l'aurez compris, un interpréteur. Dans le cas de PHP, celui-ci se nomme le Zend Engine, qui fournit toute l'infrastructure nécessaire au fonctionnement du langage. Avant d'être renvoyé vers le client, la page PHP doit passer par l'interpréteur. C'est le serveur qui transfert tous les fichiers avec une extension .php vers celui-ci.

Logo du Zend Engine
Le déroulement au niveau serveur est le suivant : le poste client envoi une requête pour un fichier .php vers le serveur Web. Celui-ci transfère le fichier demandé à l'interpréteur, chargé de décoder les lignes PHP qui s'y trouvent. L'interpréteur transfère ensuite à son tour le fichier obtenu (le plus souvent ce n'est plus qu'un fichier HTML tout a fait normal) vers le serveur, qui se charge de le renvoyer au poste client.

L'interpréteur lui-même fait passer le fichier par plusieurs étapes. Notre index.php passe par un lexer (analyseur de syntaxe), où le PHP est vérifié, puis convertit en unités de code compréhensibles pour le processeur. Ce flux d'unités est ensuite traité par le parser, qui créé le code intermédiaire qui sera exécuté pour le Zend Engine. Ce dernier agit comme une machine virtuelle, qui combine les différentes unités sous forme d'opcodes, et les exécute un à un.

Les opcodes (operational codes) sont les instructions à lancer par l'Executor du Zend Engine. Une fois exécutés, ils sont effacés de la mémoire (sauf si le serveur est équipé d'un outil comme le Zend Cache), ce qui est oblige le serveur à récréer des opcodes à chaque requête de la page.

Le contenu ainsi créé est ensuite renvoyé vers le tampon de sortie, donc le serveur et, par extension, le logiciel client.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page