【问题标题】:How exactly is a PHP script executed?PHP 脚本究竟是如何执行的?
【发布时间】:2011-02-12 19:28:17
【问题描述】:

我只是在想“PHP 脚本到底是如何执行的?”我以为是先解析语法错误等,然后再解释执行。

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

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

这只是为了帮助我理解它。我很感兴趣,但无法通过 Google 找到好的答案。

【问题讨论】:

标签: php parsing interpreter


【解决方案1】:

基本上,每次加载 PHP 脚本时,都会经过两个步骤:

  • PHP 源代码被解析,并转换为所谓的操作码
    • 相当于 JAVA 的字节码
    • 如果你想看看它们的样子,你可以使用VLD extension
  • 然后,执行那些操作码

塞巴斯蒂安·伯格曼 (Sebastian Bergmann) 在 slideshare 上的这些幻灯片可能会帮助您更好地理解该过程:PHP Compiler Internals

【讨论】:

    【解决方案2】:

    这里也是所有parser tokens的列表。

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 2016-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多