【发布时间】:2011-02-12 19:28:17
【问题描述】:
我只是在想“PHP 脚本到底是如何执行的?”我以为是先解析语法错误等,然后再解释执行。
但是,我不知道为什么我认为这是正确的。我可能错了。
那么,PHP 文件究竟是如何解释和执行的呢?这涉及到哪些阶段?包含的文件如何适应脚本的解析?
这只是为了帮助我理解它。我很感兴趣,但无法通过 Google 找到好的答案。
【问题讨论】:
标签: php parsing interpreter
我只是在想“PHP 脚本到底是如何执行的?”我以为是先解析语法错误等,然后再解释执行。
但是,我不知道为什么我认为这是正确的。我可能错了。
那么,PHP 文件究竟是如何解释和执行的呢?这涉及到哪些阶段?包含的文件如何适应脚本的解析?
这只是为了帮助我理解它。我很感兴趣,但无法通过 Google 找到好的答案。
【问题讨论】:
标签: php parsing interpreter
基本上,每次加载 PHP 脚本时,都会经过两个步骤:
塞巴斯蒂安·伯格曼 (Sebastian Bergmann) 在 slideshare 上的这些幻灯片可能会帮助您更好地理解该过程:PHP Compiler Internals
【讨论】:
这里也是所有parser tokens的列表。
【讨论】:
PHP 是自 PHP 4.0 以来的编译语言
什么是编译器的概念似乎是一个引起很大混乱的主题。有些人认为编译器是将一种语言的源代码转换为可执行程序的程序。什么是编译器的定义实际上比这更广泛。
编译器是将源代码转换为代码的另一种表示形式的程序。目标表示通常是机器代码,但它也可能是另一种语言甚至相同语言的源代码。
PHP 在 2000 年成为编译语言,当时 PHP 4 首次发布。在版本 3 之前,PHP 源代码由 PHP 解释器立即解析和执行。
PHP 4 引入了 Zend 引擎。该引擎将 PHP 代码的处理分为几个阶段。第一阶段解析 PHP 源代码并生成 PHP 代码的二进制表示,称为 Zend 操作码。操作码是类似于 Java 字节码的指令集。这些操作码存储在内存中。 Zend 引擎处理的第二阶段包括执行生成的操作码。
更多信息请到http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html
【讨论】: