2010-04-27 3 views
34

Ich dachte nur an mich selbst "Wie genau wird ein PHP-Skript ausgeführt?" Ich dachte, es wurde zuerst für Syntaxfehler usw. geparst und dann interpretiert und ausgeführt.Wie genau wird ein PHP-Skript ausgeführt?

Allerdings weiß ich nicht warum Ich glaube, das ist richtig. Ich bin wahrscheinlich falsch.

Also, wie genau wird eine PHP-Datei interpretiert und ausgeführt? Um welche Phasen handelt es sich? Wie passen enthaltene Dateien in das Parsen des Skripts?

Dies ist nur um mir zu helfen, meinen Kopf herumzukommen. Ich bin interessiert und kann keine gute Antwort mit Google finden.

+0

Das? https://stackoverflow.com/a/46507205/1429432 –

Antwort

15

Grundsätzlich jedes Mal, wenn ein PHP-Skript geladen wird, geht es um zwei Schritte:

  • Der Code PHP Quelle wird analysiert und umgewandelt, was Opcodes genannt
    • Art eines gleichwertigen von Java-Bytecode
    • Wenn Sie sehen wollen, was diese aussehen, können Sie die VLD extension
  • verwenden
  • Dann werden diejenigen Opcode

Diese Folien von Sebastian Bergmann, auf Slide ausgeführt wird, könnte Ihnen helfen, diesen Prozess ein bisschen besser zu verstehen: PHP Compiler Internals

14

PHP ist eine kompilierte Sprache seit PHP 4.0

Die Idee von dem, was ist ein Compiler ein Thema zu sein scheint, die große Verwirrung verursacht. Manche Leute nehmen an, dass ein Compiler ein Programm ist, das Quellcode in einer Sprache in ein ausführbares Programm umwandelt. Die Definition dessen, was ein Compiler ist, ist tatsächlich breiter.

Ein Compiler ist ein Programm, das Quellcode in eine andere Repräsentation des Codes umwandelt. Die Zielrepräsentation ist oft Maschinencode, aber es kann auch Quellcode in einer anderen Sprache oder sogar in derselben Sprache sein.

PHP wurde im Jahr 2000 eine kompilierte Sprache, als PHP 4 zum ersten Mal veröffentlicht wurde. Bis zur Version 3 wurde der PHP-Quellcode direkt vom PHP-Interpreter analysiert und ausgeführt.

PHP 4 führte die Zend-Engine ein. Diese Engine teilt die Verarbeitung von PHP-Code in mehrere Phasen auf. Die erste Phase analysiert den PHP-Quellcode und generiert eine binäre Darstellung des PHP-Codes, der als Zend-Opcodes bekannt ist. Opcodes sind Sätze von Anweisungen, die Java-Bytecodes ähnlich sind. Diese Opcodes werden im Speicher gespeichert. Die zweite Phase der Zend-Engine-Verarbeitung besteht im Ausführen der generierten Opcodes.

Formular Weitere Informationen gehen zu http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html