文档章节

PHP的执行过程

one_plus_plus
 one_plus_plus
发布于 2016/07/09 17:52
字数 763
阅读 41
收藏 0

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应用、在命令行下以脚本方式运行等等.

© 著作权归作者所有

共有 人打赏支持
上一篇: 介绍PHP和Zend
one_plus_plus
粉丝 10
博文 80
码字总数 71746
作品 0
东城
人事招聘
私信 提问
PHP内核探索:Zend虚拟机

通过前面的学习,我们了解到一个PHP文件在服务器端的执行过程包括以下两个大的过程: 递给php程序需要执行的文件, php程序完成基本的准备工作后启动PHP及Zend引擎, 加载注册的扩展模块。 ...

旋转木马-千里马
2016/01/21
53
0
PHP调用Oracle存储过程

存储过程是实际位于 Oracle 中的程序。大多数存储过程都是用 PL/SQL 编写的,在 Oracle 数据库 10g 第 2 版和更高版本中,您可以用 Java、.NET 或其他语言将它们编写为外部过程。 存储过程通...

workingTiams
2012/11/30
0
0
PHP内核探索:一次请求生命周期

深入探讨 真正的内部运行过程没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。 Apache启动后,PHP解释程序也随之启动。PHP的启动过程有两步: 第一步是...

贪睡猫仙mosen
2014/02/18
0
0
PHP内核探索:一次请求的开始与结束

开始阶段有两个过程: 第一个过程是模块初始化阶段(MINIT), 在整个SAPI生命周期内(例如Apache启动以后的整个生命周期内或者命令行程序整个执行过程中), 该过程只进行一次。 第二个过程...

贪睡猫仙mosen
2014/02/18
0
0
PHP内核探索:zend_execute的具体执行过程

PHP内核探索:zend_execute的具体执行过程 解释器引擎最终执行op的函数是zendexecute,实际上zendexecute是一个函数指针,在引擎初始化的时候zendexecute默认指向了execute,这个execute定义在...

开元中国2015
2015/06/19
72
0

没有更多内容

加载失败,请刷新页面

加载更多

走上真正的教育之路——《中国最美的语文》读后感3100字

走上真正的教育之路——《中国最美的语文》读后感3100字: 文:张平。《中国最美的语文》,乍一听,你可能会觉得这个作者或者编辑有些大言不惭,竟然起这么大而狂的名字,可能名不副实。我没...

原创小博客
16分钟前
0
0
tomcat线程模型

Connector结构 BIO模式 NIO模式

grace_233
36分钟前
2
0
Javascript

变量定义 以$,_,字母开头 大小写敏感 var 关键字声明变量 声明未赋值undefined 数据类型 字符串,数字,布尔,数组,NULL,undefined 变量均为对象 函数 无默认值 var声明的是局部变量 函数外声明...

关元
38分钟前
1
0
文件系统、服务、防火墙、SELINUX——安全四大金刚

一提到安全,大家都会想到防火墙,和文件系统权限。而实际工作环境中,我们在Linux的安全配置,会涉及到四个级别。我们思考一个场景,你要在百度盘中存放一个文件,这个动作需要考虑下面四个...

Linux就该这么学
39分钟前
1
0
从源码角度理解Java设计模式——门面模式

一、门面模式介绍 门面模式定义:也叫外观模式,定义了一个访问子系统的接口,除了这个接口以外,不允许其他访问子系统的行为发生。 适用场景:子系统很复杂时,增加一个接口供外部访问。 优...

我叫刘半仙
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部