:-: 
## Zeed 引擎
Zeed 引擎是 PHP4 以后加入到 PHP,是對原有 PHP 解釋器的重寫,整體使用 C 語言開發,也可以把PHP理解成用C寫的一個編程語言軟件。引擎的作用是將 PHP 代碼翻譯為一種名為 Opcode 的中間語言,類似于Java 的 ByteCode(字節碼)。
實現了基本的數據結構、內存分配及管理,提供了相應的API方法供外部調用。**是一切的核心,所有的外圍功能均圍繞Zend實現**。
Zeed 引擎執行 PHP 程序代碼的四個步驟:
~~~text
1. 詞法分析 Scanning(Lexing):將 PHP 代碼轉換成語言片段(Tokens)
2. 解析 Parsing:將 Tokens 轉換成簡單而有意義的表達式
3. 編譯 Complication:將表達式編譯成 Opcode
4. 執行 Execution:順序執行 Opcode,每次一條,從而實現 PHP 腳本功能
~~~
Opcache 擴展可以將 Opcode 緩存,在處理重復請求時省略 1、2、3步過程,以加速 PHP 運行速度。
## Extensions 擴展
通過組件式的方式提供各種基礎服務,常見的內置函數、標準庫都是通過 Extensions 來實現的。用戶可以根據需求安裝不同擴展。
## SAPI(服務端應用編程接口)
Server Application Programming Interface 縮寫,服務端應用編程接口。通過一系列鉤子函數使得 PHP 可以和外圍交換數據,SAPI 就是 PHP 和外部環境的代理器,成功的將 PHP 本身和上層應用解耦隔離,PHP 可以不用考慮針對不同應用實現兼容,而且應用也可針對自己的特點實現不同的處理方式。
常用四種SAPI :
- **CGI**
CGI 即通用網關接口(Common Gateway Interface),是服務器與后臺語言交互的協議,它把網頁和 WEB 服務器中的執行程序連接起來,把從 HTML 接收的指令傳遞給服務器的執行程序,再把服務器執行程序的結果返還給 HTML 頁。CGI 的跨平臺性能極佳,幾乎可以在任何操作系統上實現。
CGI 在每次連接請求時都需要 fork 一個全新進程進行處理,完后返回結果,關閉進程,這就是 fork-and-execute 模式。CGI 方式的服務器有多少連接請求就會有多少 CGI 子進程,子進程反復加載是 CGI 性能低下的主要原因。
- **FastCGI**
` fast-cgi` 是 CGI 的升級版本,可以看成是一個常駐內存的 CGI,它允許在一個進程內處理多個請求,而不是一個請求處理完畢就直接結束進程。
工作原理:
~~~text
FastCGI 先啟動一個 Master 進程,解析配置文件,初始化執行環境,然后在啟動多個 Worker 進程。
當請求過來時,Master 會傳遞給一個 Worker ,然后立即可以接收下一個請求。
~~~
- **PHP-FPM**
FastCGI 協議的一個實現,任何實現了 FastCGI 協議的服務器都能夠與之通信。
PHP 進程管理器,包含 Master 和 Worker 進程兩種進程。Master 進程只有一個,負責監聽端口,接收來自服務器的請求,而 Worker 進程有多個(根據實際需要配置),每個進程的內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正執行的地方。
- **CLI**
CLI 是 PHP 的命令運行模式
- **Apache 模塊的 DLL**
在模塊化(DLL)中,PHP是與Web服務器一起啟動并運行(是apache在CGI的基礎上進行的一種擴展,加快PHP的運行效率)
## Application 上層應用
我們日常編寫的 PHP 代碼程序,無論是 Web 應用還是 CLI 方式運行的應用都是上層應用,PHP 程序員主要工作就是編寫它們。
- 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