PHP内核之旅-1.生命周期
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模式。处理一次请求后就关闭。

在各个阶段之间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生命周期

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/
        
        关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!
        
        版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
        
        特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
        
        声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
PHP内核之旅-1.生命周期的更多相关文章
- 深入理解PHP内核(二)概览-PHP生命周期与Zend引擎
		
本文参考自<深入理解PHP内核>,地址:https://github.com/reeze/tipi 本文链接:http://www.orlion.ml/232/ 1.SAPI接口 SAPI ...
 - React Native填坑之旅--组件生命周期
		
这次我们来填React Native生命周期的坑.这一点非常重要,需要有一个清晰的认识.如果你了解Android或者iOS的话,你会非常熟悉我们今天要说的的内容. 基本上一个React Native的 ...
 - PHP内核的学习--PHP生命周期
		
一切的开始: SAPI接口 SAPI(Server Application Programming Interface)指的是PHP具体应用的编程接口, 就像PC一样,无论安装哪些操作系统,只要满足了 ...
 - PHP内核之旅-2.SAPI中的Cli
		
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli 一.SAPI是什么? 1.1 理解SAPI (1)SAPI是PHP框架的接口层.有很多种服务器的SAPI的实 ...
 - PHP内核之旅-3.变量
		
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一.弱类型语言 php是弱类型语言.一个变量可以表示任意数据类型. php强大的一 ...
 - PHP内核之旅-6.垃圾回收机制
		
回收PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6 ...
 - PHP内核之旅-5.强大的数组
		
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6.垃 ...
 - PHP内核之旅-4.可变长度的字符串
		
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6.垃 ...
 - 3.PHP内核探索:一次请求生命周期
		
我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的.PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口). PHP总共有三个模块: ...
 
随机推荐
- JAVA_SE基础——32.this关键字调用本类的构造方法
			
黑马程序员入学blog... 也算是学习笔记. 下面我们来看段代码: package day07; class Student{ int id; //身份证 String name; //名字 pub ...
 - ajax和jquery使用技巧
			
1.使用ajax的方法的时候可以使用u方法来获取连接,这样更加安全:alert弹窗的时候需要单引号双引号火狐浏览器会报错!
 - 剑指offer-数据流中的中位数
			
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...
 - 网络IO超时的几种实现
			
一.select/poll/epoll int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,str ...
 - Netty事件监听和处理(上)
			
陪产假结束了,今天又开始正常上班了,正好赶上米粉节活动,又要忙上一阵了,米粉节活动时间为4.03 - 4.10,有不少优惠,感兴趣的可以关注mi.com或小米商城app. 今天给大家送了福利:小爱音箱 ...
 - CURL学习总结(1)
			
1.curl是什么? 百度百科定义: curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.W ...
 - Spring Security入门(3-6)Spring Security 的鉴权 - 自定义权限前缀
 - MFC基础
			
入门博客:http://www.cnblogs.com/qinfengxiaoyue/category/451679.html 消息机制:http://www.cnblogs.com/qinfengx ...
 - bugfree,CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.0.99' (4)
			
安装bugfree后,访问报错:CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '19 ...
 - 对return函数的认识
			
例1: def funOut(): def funIn(): print('宾果!你成功访问到我啦!') return funIn() #注意这里return的是funIn()即是一个函数 funOu ...