在PHP中,编译时和运行时是什么意思?

时间:2014-05-20 00:37:13

标签: php compile-time

PHP是一种解释型语言,未编译。然而,我遇到了一本书,提到在编译时PHP中发生的事情,PHP手册声明声明const happens at compile-time。由于PHP未编译,因此编译时使用的术语如何与PHP相关?

如果它只是“当脚本被读取并转换为解释器子程序时”,那么术语编译时和运行时之间有什么区别?

1 个答案:

答案 0 :(得分:8)

PHP源代码经历了将其编译为PHP操作码的步骤。这个想法已经在各种平台上实现,最着名的是Java。从理论上讲,通过拥有一个单独的虚拟机"运行Opcodes的运行时,语言设计者能够将语言与可移植性问题分开。

您可以找到these Opcodes in the manual

的列表

在没有操作码缓存的典型PHP环境中,编译步骤和"运行时"然而,当你引入一个"加速器/ opscode缓存"时,步骤是无法区分的。与APC或Zend Platform产品一样,您可以看到这些是流程中的单独步骤。

一旦脚本编译成PHP Opscodes,它就可以从缓存中运行而无需从源代码重新编译,这是这些加速器可以大大提高性能的地方。

如果你专注于"运行时" PHP的一个方面你看到"解释"与编译/链接语言(如作为本机操作系统程序运行的c / c ++)相比,PHP的本质,因为它需要运行时环境。

对于PHP,php程序是本机操作系统程序(或本机作为本机OS Web服务器的模块)。

与Java在Java虚拟机(JVM)和#34;内部运行的方式不同。 PHP的脚本在PHP中运行,因此不包含操作系统本地执行操作的具体细节。