首页 文章

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

提问于
浏览
20

这个问题在这里已有答案:

PHP是一种解释型语言,未编译 . 然而,我遇到了一本书,提到在编译时PHP中发生的事情,PHP手册说明了const happens at compile-time . 因为PHP没有编译,所以编译时使用的术语与PHP有什么关系?

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

1 回答

  • 8

    PHP源代码经历了将其编译为PHP Opcode的步骤 . 这个想法已经在各种平台上实现,最着名的是Java . 从理论上讲,通过使用单独的“虚拟机”运行时来运行操作码,语言设计人员可以将语言与可移植性问题分开 .

    你可以找到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中运行,因此不包含操作系统本地执行操作的具体细节 .

相关问题