继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

PHP内核之旅-1.生命周期

慕容森
关注TA
已关注
手记 239
粉丝 182
获赞 648

PHP 内核之旅系列

PHP内核之旅-1.生命周期

PHP内核之旅-2.SAPI中的Cli

PHP内核之旅-3.变量

回到顶部

1.SAPI接口

PHP具体应用的编程接口。

回到顶部

2.开始和结束

  PHP开始执行以后会经过两个主要的阶段:

    处理请求之前的开始阶段和请求之后的结束阶段。

      1.1开始阶段:

        1.1.1 模块初始化阶段(MINT),只进行一次。

        1.1.2 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数

      1.2结束阶段(脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段)

        1.2.1 停用模块(RSHUTDOWN,对应RINIT)

        1.2.2 关闭模块(MSHUTDOWN,对应MINIT),Web服务器退出或者命令行脚本执行完毕退出时

回到顶部

3.单进程SAPI生命周期

  CLI/CGI模式的PHP属于单进程的SAPI模式。处理一次请求后就关闭。

https://img2.mukewang.com/5afafef80001191b05340484.jpg

在各个阶段之间PHP还做了很多工作。

(1)启动

(2)初始化若干全局变量

(3)初始化若干常量

(4)初始化Zend引擎和和性组建

(5)解析php.ini

(6)全局操作函数的初始化

(7)初始化静态构建的模块和共享模块(MINIT)

(8)禁用函数和类

(9)ACTIVATION

(10)激活Zend引擎

(11)激活SAPI

(12)环境初始化

(13)模块请求初始化

(14)运行

  php_execute_script函数包含了运行PHP脚本的全部过程

(15)DEACTIVATION

(16)flush

  sapi_flush将最后的内容刷新出去

(17)关闭Zend引擎

回到顶部

4.多进程SAPI生命周期

https://img2.mukewang.com/5afaff360001bf6605660255.jpg

 

回到顶部

 5.Zend引擎

Zend引擎是PHP实现的核心,提供了语言实现上的基础设施。

  PHP的语法时限,脚本的编译运行环境,扩展机制以及内存管理。

  很多PHP扩展都是使用Zend API,而Zend正是PHP语言本身的实现,PHP只是使用Zend这个内核来构建PHP语言的。

 

参考资料:http://www.php-internals.com/book/?p=chapt02/02-01-php-life-cycle-and-zend-engine


作  者: Jackson0714
       出  处:http://www.cnblogs.com/jackson0714/        
       关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!        
       版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP