:-: ![](https://img.kancloud.cn/28/39/28392f5df40d63f0d81aeaeaba8a9f81_461x486.png)
## 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