2014-05-20 5 views
14

PHP ist eine interpretierte Sprache, nicht kompiliert. Dennoch bin ich auf ein Buch gestoßen, in dem während der Kompilierung Dinge erwähnt werden, die in PHP passieren, und im PHP-Handbuch heißt es: const happens at compile-time. Wie wird der Begriff Kompilierzeit in Bezug auf PHP verwendet, da PHP nicht kompiliert wird?Was ist in PHP mit Kompilierzeit und Laufzeit gemeint?

Wenn es nur gemeint ist "wenn das Skript in die Interpreter-Subroutinen gelesen und übersetzt wird", was ist der Unterschied zwischen den Begriffen Kompilierzeit und Laufzeit?

+1

@Dagon Einfach dort. Die Ergebnisse dieser Forschung würden das OP-Recht dazu führen (http://stackoverflow.com/questions/1514676), das Gegenteil anzeigend. Der Begriff "kompilieren" hat hier einige Feinheiten. –

+3

@Dagon Das ist ziemlich unhöflich für jemanden, der sich geirrt hat. Der Interpreter ist kompiliert, aber das PHP-Skript nicht. Sehen Sie mehr hier: http://stackoverflow.com/questions/1514676/is-php-compiled-or-interpreted – TigerBear

+0

@Dagon Es ist nicht so einfach wie das. Es ist möglich, PHP im herkömmlichen Sinn zu kompilieren, obwohl das keineswegs eine Out-of-the-Box-Funktionalität ist. Bei der Interpretation gibt es Schritte, die als Kompilierung angesehen werden können. In der Tat ist Interpretation selbst Kompilation. Die Unterscheidung zwischen Kompilation und Interpretation wird jedoch vorgenommen, da signifikante Unterschiede bestehen. – Cully

Antwort

5

PHP-Quellcode durchläuft einen Schritt, in dem er in PHP-Opcode kompiliert wird. Diese Idee wurde auf einer Vielzahl von Plattformen implementiert, vor allem mit Java. Theoretisch sind die Sprachentwickler in der Lage, die Sprache von Portabilitätsproblemen zu trennen, indem sie eine separate "virtuelle Maschine" -Laufzeit zum Ausführen der Opcodes haben.

Sie eine Liste von these Opcodes in the manual

In einer typischen PHP-Umgebung ohne Opcode-Caching, die Kompilierung Schritt und den „Laufzeit“ Schritt nicht zu unterscheiden sind, jedoch, wenn Sie einführen eine „Beschleuniger/Opscode Cache finden "Wie bei APC oder dem Zend Platform-Produkt können Sie sehen, dass dies separate Schritte im Prozess sind.

Sobald ein Skript in PHP Opscodes kompiliert wurde, kann es aus dem Cache ausgeführt werden, ohne dass es aus der Quelle neu kompiliert werden muss, wo diese Beschleuniger die Leistung erheblich verbessern können. Wenn Sie sich auf den "Runtime" -Aspekt von PHP konzentrieren, sehen Sie die "interpretierte" Natur von PHP, da sie eine Laufzeitumgebung benötigt, wenn sie mit einer kompilierten/verknüpften Sprache wie c/C++ verglichen wird, die als native läuft Betriebssystemprogramm.

Bei PHP ist das php-Programm das native Betriebssystemprogramm (oder nativ als Modul eines nativen OS-Webservers).

Ähnlich wie Java innerhalb der "Java Virtual Machine (JVM) läuft" PHP-Skripte laufen innerhalb von PHP und enthalten daher nicht die Besonderheiten, wie die Operationen vom Betriebssystem nativ ausgeführt werden.