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
来源: https://www.cnblogs.com/jackson0714/p/PHP_1.html