1. 模块初始化
主要是 PHP 框架、Zeed引擎初始化操作,这个阶段一般在 SAPI 启动时执行一次,对于 PHP-FPM 就是在 master 启动时执行。
- 激活 SAPI :sapi_activate(),初始化请求信息 SG(request_info)、设置读取 POST 请求的 handle 等,在 module_startup 阶段处理完成后将调用 sapi_acivate()
- 启动 PHP 输出
- 初始化垃圾回收器,分配内存
- 启动 Zeed 引擎
- 注册 PHP 定义的常量
- 解析 php.ini,映射PHP,Zend核心的php.ini配置
- 注册静态、动态编译的扩展
- 回调各个扩展定义的 moudle_starup 钩子函数
- 注册 php.ini 中禁用的函数类
2. 请求初始化阶段
一个页面请求发生时,在请求处理前都会经历的一个阶段。对于 PHP-FPM 而言,是在 Worker 进程 accept 一个请求且读取、解析完数据后的阶段。在这个阶段,SAPI 层将控制权交给了 PHP层,PHP初始化本次请求执行脚本所需的环境变量。
- 激活 PHP 输出
- 激活 Zeed 引擎
- 重置垃圾回收器
- 初始化编译器
- 初始化执行器
- 初始化词法扫描器
- 激活 SAPI
3. 脚本执行阶段
PHP 代码解析执行过程,Zeed 引擎接管控制权,将php脚本代码编译成 opcodes 并顺次执行。
4. 请求关闭阶段
请求处理完成,PHP 启动清理程序。这个阶段,将 flush 输出内容、发送 http 响应内容等,然后它会按顺序调用各个模块的 RSHUTDOWN 方法。 RSHUTDOWN 用以清除程序运行时产生的符号表,也就是对每个变量调用 `unset `函数。
5. 模块关闭阶段
该阶段在 SAPI 关闭时执行,与模块初始化阶段对应,这个阶段主要进行资源的清理、PHP 各个模块的关闭操作,同时,将回调各个扩展的 module shutdown 钩子函数。具体的处理函数为 php\_module\_shutdown() 。
- PHP
- PHP 核心架构
- PHP 生命周期
- PHP-FPM 详解
- PHP-FPM 配置优化
- PHP 命名空间和自动加载
- PHP 运行模式
- PHP 的 Buffer(缓冲区)
- php.ini 配置文件参数优化
- 常见面试题
- 常用函数
- 几种排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常见问题
- MySQL 索引
- 事务
- 锁机制
- Explain 使用分析
- MySQL 高性能优化规范
- UNION 与 UNION ALL
- MySQL报错:sql_mode=only_full_group_by
- MySQL 默认的 sql_mode 详解
- 正则表达式
- Redis
- Redis 知识
- 持久化
- 主从复制、哨兵、集群
- Redis 缓存击穿、穿透、雪崩
- Redis 分布式锁
- RedisBloom
- 网络
- 计算机网络模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常见几种网络攻击方式
- Nginx
- 状态码
- 配置文件
- Nginx 代理+负载均衡
- Nginx 缓存
- Nginx 优化
- Nginx 配置 SSL 证书
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 进程管理
- CentOS与Ubuntu系统区别
- Java
- 消息队列
- 运维
- RAID 磁盘阵列
- 逻辑分区管理 LVM
- 业务
- 标准通信接口设计
- 业务逻辑开发套路的三板斧
- 微信小程序登录流程
- 7种Web实时消息推送方案
- 用户签到
- 用户注册-短信验证码
- SQLServer 删除同一天用户重复签到
- 软件研发完整流程
- 前端
- Redux
- 其他
- 百度云盘大文件下载
- 日常报错记录
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客户端无法连接SVN服务器,主机积极拒绝
- Python
- 基础
- pyecharts图表
- 对象
- 数据库
- PySpark
- 多线程
- 正则
- Hadoop
- 概述
- HDFS