简述php的执⾏过程,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的结构体系:
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应⽤、在命令⾏下以脚本⽅式运⾏等等.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。