这是我参与更文挑战的第 21 天,活动详情查看: 更文挑战”
本文已收录至Github,欢迎 Star:github.com/Jackson0714…
个人网站:www.passjava.cn
PHP 生命周期的两个节点
PHP开始执行以后会经过两个主要的阶段:
处理请求之前的开始阶段和请求之后的结束阶段。
-
开始阶段:
- 模块初始化阶段(MINT),只进行一次。
- 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数
-
结束阶段(脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段)
-
停用模块(RSHUTDOWN,对应RINIT)
-
关闭模块(MSHUTDOWN,对应MINIT),Web服务器退出或者命令行脚本执行完毕退出时
-
生命周期内做的工作
(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引擎
Zend引擎 是什么?
Zend引擎是PHP实现的核心,提供了语言实现上的基础设施。
PHP的语法时限,脚本的编译运行环境,扩展机制以及内存管理。
很多PHP扩展都是使用Zend API,而Zend正是PHP语言本身的实现,PHP只是使用Zend这个内核来构建PHP语言的。
欢迎关注我的公众号:「悟空聊架构」