参见英文答案 >
Is PHP compiled or interpreted?13个
PHP是一种解释语言,不编译.然而,我遇到了一本书,在编译时提到PHP中发生的事情,PHP手册指出了一个声明一个 const happens at compile-time的内容.由于没有编译PHP,所以使用与PHP相关的术语编译时期.
PHP是一种解释语言,不编译.然而,我遇到了一本书,在编译时提到PHP中发生的事情,PHP手册指出了一个声明一个 const happens at compile-time的内容.由于没有编译PHP,所以使用与PHP相关的术语编译时期.
如果它只是意味着“当脚本被读取并被翻译成解释器子程序”时,那么术语编译时和运行时间之间有什么区别?
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)”中的方式不同,PHP的脚本在PHP中运行,因此不包含操作将如何由操作系统本机执行的细节.