PHP脚本究竟是如何执行的?

时间:2010-04-27 10:49:16

标签: php parsing interpreter

我只是在想自己“PHP脚本究竟是如何执行的?”我认为它首先被解析为语法错误等,然后解释并执行。

但是,我不知道为什么我认为这是正确的。我可能错了。

那么,PHP文件究竟是如何被解释和执行的呢?这涉及哪些阶段?包含的文件如何适合解析脚本?

这只是为了帮助我理解它。我很感兴趣,无法与谷歌找到一个好的答案。

3 个答案:

答案 0 :(得分:18)

自PHP 4.0以来,PHP是一种编译语言

什么是编译器的想法似乎是一个引起很大困惑的主题。有些人认为编译器是一种将一种语言的源代码转换为可执行程序的程序。什么是编译器的定义实际上比那更广泛。

编译器是一种将源代码转换为代码的另一种表示的程序。目标表示通常是机器代码,但它也可能是另一种语言的源代码,甚至是同一种语言。

PHP成为2000年的一种编译语言,当时PHP 4首次发布。在版本3之前,PHP解释器立即解析并执行了PHP源代码。

PHP 4引入了Zend引擎。该引擎将PHP代码的处理分为几个阶段。第一阶段解析PHP源代码并生成称为Zend操作码的PHP代码的二进制表示。操作码是类似于Java字节码的指令集。这些操作码存储在内存中。 Zend引擎处理的第二阶段在于执行生成的操作码。

请填写更多信息,转至http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html

答案 1 :(得分:16)

基本上,每次加载PHP脚本时,都需要两步:

  • 解析PHP源代码,并将其转换为所谓的操作码
    • 等同于JAVA的字节码
    • 如果您想查看它们的外观,可以使用VLD extension
  • 然后,执行那些操作码

来自Sebastian Bergmann的幻灯片中的这些幻灯片可能会帮助您更好地理解这个过程:PHP Compiler Internals

答案 2 :(得分:1)

这里还列出了所有parser tokens