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