PHP的执行过程
PHP的执行过程
四明狂客 发表于2年前
PHP的执行过程
  • 发表于 2年前
  • 阅读 40
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: PHP 现在不是解释型的语言,而是编译型的语言

1)传递给php程序需要的执行文件hello.php,php程序完成基本的准备工作后启动PHP及Zend引擎,加载注册的扩展模块。

 2) 初始化完后读取脚本文件,Zend引擎对脚本进行此词法分析,语法分析,然后有Zend引擎编译成opcode码,最后Zend虚拟机执行opcode码。

PHP本身是用c实现的,因此最终调用的也都是c的函数,实际上,我们可以把php看做是一个c开发的软件。

详细的过程:

a.Scaning(Lexing):将PHP代码转换成语言片(Tokens).

b.Parsing:将Tokens转换成简单而有意义的表达式.

c.Compilation:将表达式编译成Opcode.

d.Execution:顺次执行Opcodes,从而实现PHP脚本的功能.

3)词法分析和语法分析

        解释器的组成: a.读取源程序并处理语言结构。b.处理语言结构并生成目标程序.

        上面提到的Lex:是词法分析器,也就是判断变量单词是否写错了,标签是否写错等等。

         Yacc 是语法分析生成器: 语法分析也就是函数的结构,调用的方式 都是否正确等等。

4)opcode:简单来说 ,opcode是ZEND虚拟机中的指令,也就是php执行的最基本的单位.

5)PHP的结构体系:

    a.zend引擎:

    Zend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析    等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕zend实现。

b.Extensions扩展:

    绕着zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析就是extension的典型应用)。

c.Sapi  :

        Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过sapi成功的将php本身和上层应用解耦隔离,php可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

d.上层应用:

     这就是我们平时编写的php程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用、在命令行下以脚本方式运行等等.

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 10
博文 79
码字总数 72315
×
四明狂客
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: