PHP est un langage de script côté serveur initialement développé par Rasmus Lerdorf en 1994 pour gérer son site Web personnel. En 1995, PHP a été rendu public, permettant aux développeurs Web de créer plus facilement du contenu dynamique. Le code PHP s'exécute côté serveur, ce qui le rend idéal pour créer des applications Web qui interagissent avec des bases de données, traitent les entrées des utilisateurs et fournissent des pages Web dynamiques.
Commençons par un exemple simple :
echo "Hello world";
Si vous exécutez ce code depuis le terminal de votre ordinateur, vous obtiendrez la sortie "Hello world" dans votre terminal. Nous savons que notre ordinateur seul peut comprendre le code machine comme 0 ou 1.
Pour comprendre cela, examinons comment les ordinateurs comprennent le code. L'ordinateur ne comprend que le code machine, qui est un format binaire (0 et 1). Pour que du code de haut niveau comme PHP soit exécuté, il doit être traduit en code machine. C'est là que les compilateurs et les interprètes entrent en jeu.
Compilateur et Interprète sont tous deux des logiciels de traduction ou des programmes qui convertissent le code source écrit dans des langages de programmation en code machine. Autrement dit, le code que nous écrivons, que les humains peuvent comprendre, est converti par ces compilateurs ou interprètes en code machine (0 et 1) que l'ordinateur peut comprendre, lui permettant d'exécuter des instructions et de nous fournir le résultat. Passons à un aperçu de base de ces traducteurs pour mieux les comprendre.
Un interprète est un type de traducteur qui lit ligne par ligne l’intégralité du code source écrit dans un langage de haut niveau et convertit immédiatement chaque ligne en code machine. S'il rencontre une erreur lors de la lecture d'une ligne de code, il s'arrête immédiatement et signale l'erreur au programmeur, ce qui facilite le débogage. Cette exécution ligne par ligne en fait également un processus plus lent par rapport à un compilateur.
Un compilateur est un type de traducteur qui convertit d'un seul coup l'intégralité du code source écrit dans un langage de haut niveau en code machine. S'il y a une erreur dans le code, le compilateur compilera toujours l'intégralité du code, mais l'erreur sera détectée au moment de l'exécution, ce qui rendra plus difficile pour le programmeur d'identifier et de corriger l'erreur. Cependant, étant donné que le compilateur convertit immédiatement l'intégralité du code source en code machine, il fonctionne généralement plus rapidement qu'un interpréteur lors de l'exécution.
La réponse est donc que PHP est avant tout un langage interprété. Lorsqu'un script PHP est exécuté, l'interpréteur PHP analyse et exécute le code au moment de l'exécution, plutôt que de le compiler au préalable en code machine, comme avec les langages compilés comme C ou C . Cependant, certaines optimisations, comme la mise en cache du bytecode avec des outils tels que OPcache, peuvent améliorer les performances en stockant le bytecode compilé pour éviter de réinterpréter le code à chaque requête.
Il existe également des projets comme HHVM (HipHop Virtual Machine), qui a été développé par Facebook pour exécuter du code PHP à l'aide d'un processus de compilation Just-In-Time (JIT). Cela lui permet de compiler du code PHP en bytecode intermédiaire, puis de le compiler en code machine à la volée, ce qui accélère l'exécution de PHP. Avec PHP 8, la compilation JIT est intégrée directement à PHP, permettant de compiler des parties du code, brouillant encore davantage les frontières entre le comportement interprété et compilé.
JIT, ou compilation Just-In-Time, est une méthode d'exécution de code en compilant des parties de celui-ci « juste à temps » pour l'exécution, plutôt qu'à l'avance. Contrairement à l'exécution interprétée traditionnelle, qui lit et exécute le code ligne par ligne, la compilation JIT traduit des parties du code en code machine juste avant qu'elles ne soient nécessaires pendant l'exécution. Cela se traduit par une exécution plus rapide car le code machine s'exécute directement sur le processeur, évitant ainsi le besoin d'interprétations répétées.
La compilation JIT se situe entre l’exécution entièrement interprétée et entièrement compilée. Voici comment cela fonctionne en général :
Interprétation initiale : le code est initialement interprété ou exécuté de manière légère pour analyser quelles parties sont les plus fréquemment utilisées ou les plus gourmandes en calcul.
Compilation à la volée : le compilateur JIT identifie les « points chauds » : les sections de code qui sont exécutées souvent ou qui nécessitent une optimisation. Il compile ensuite ces sections en code machine pendant l'exécution.
Exécution : le code machine compilé est stocké, afin que les exécutions futures puissent utiliser la version optimisée sans la recompiler, accélérant ainsi les performances.
En PHP, JIT a été introduit dans PHP 8, permettant aux fonctions ou boucles fréquemment utilisées de s'exécuter plus rapidement en les compilant en code machine au fur et à mesure de leur exécution. D'autres langages, comme JavaScript (par exemple, le moteur V8 dans Chrome) et Java, utilisent également la compilation JIT pour des avantages de performances similaires.
Dans le premier bloc, nous avons notre code écrit. Ce code va d'abord dans le JIT (compilateur Just-In-Time). Ensuite, le JIT compile et exécute le code. Lors de cette exécution, le JIT lit le code ligne par ligne et convertit immédiatement chaque ligne en code machine après l'avoir lue. S'il y a une erreur dans une ligne pendant le processus de lecture, il s'arrête là et renvoie cette erreur.
Donc, cela nous donne une petite idée de la façon dont le code PHP de haut niveau (le code que nous écrivons) est compris et exécuté par l'ordinateur.
Les scripts PHP peuvent être exécutés dans deux environnements principaux : l'interface de ligne de commande (CLI) et un environnement de serveur Web.
Interface de ligne de commande (CLI) : le code PHP peut être exécuté directement depuis la ligne de commande sur votre ordinateur. Cela permet aux développeurs d'exécuter des scripts sans navigateur, souvent utilisés pour l'automatisation, les tâches cron ou les scripts de test.
Environnement de serveur Web : PHP est généralement exécuté dans un environnement de serveur Web, où le code est exécuté en réponse aux requêtes d'un client/navigateur. Lorsqu'un script PHP est demandé, le serveur Web communique avec le moteur PHP via une couche d'interface (comme CGI, FastCGI ou FPM), qui traite le script et renvoie la sortie au client.
Chaque environnement répond à différents cas d'utilisation, permettant à PHP d'être un langage flexible pour les applications Web et en ligne de commande.
Nos ordinateurs contiennent diverses applications ou programmes que nous exécutons à des fins différentes. Cependant, lorsque nous exécutons ces applications ou programmes, ils ne peuvent pas s’exécuter d’eux-mêmes. Au lieu de cela, ils s'exécutent via le système d'exploitation de l'ordinateur. Lorsque nous écrivons du code en PHP, celui-ci devient également un programme que nous pouvons exécuter via le terminal de l'ordinateur. Ainsi, lorsque nous exécutons notre code via le terminal, il s'exécute également via le système d'exploitation.
La question est alors : comment cette application ou ce programme, ou le code que nous avons écrit, communique-t-il avec le système d'exploitation de notre ordinateur ?
Ici, le moyen utilisé pour communiquer avec le système d’exploitation est appelé OS API (Operating System’s API). Grâce à cette API du système d'exploitation, les applications ou les programmes peuvent communiquer avec le système d'exploitation de l'ordinateur, comme le montre le schéma ci-dessus. Cela nous permet de comprendre comment le code PHP s'exécute via le terminal sur notre ordinateur.
Tout d'abord, depuis le client/navigateur, nous envoyons une requête au serveur web. Cependant, le serveur web ne peut pas communiquer directement avec le moteur PHP. Pour la communication entre le serveur Web et le moteur PHP, une couche intermédiaire fonctionne entre eux, appelée SAPI ou Server API. Différents protocoles sont utilisés comme SAPI, qui permettent au serveur web de communiquer avec le moteur PHP. Ces protocoles incluent CGI, FastCGI, mod_php, FPM, etc. N'importe lequel de ces protocoles peut être utilisé pour la communication entre le serveur Web et le moteur PHP.
Les deux serveurs Web les plus populaires pour exécuter des scripts PHP sont Apache et Nginx :
Cela nous permet de mieux comprendre comment le code PHP s'exécute sur un serveur Web. Sur la base des points ci-dessus.
J'espère avoir une idée de base de la façon dont le code PHP fonctionne réellement dans les coulisses. Si cela est utile, n'oubliez pas de le partager avec les autres.
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!