> php有着5种运行模式,常见的有4种
## cgi 协议模式
cgi模式 通用网关接口(Common Gateway Interface),它允许web服务器通过特定的协议与应用程序通信, 调用原理大概为:
用户请求 -> Web服务器接收请求 -> fork 子进程 调用程序/执行程序 -> 程序返回内容/程序调用结束 -> web 服务器接收内容 -> 返回给用户
由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低。
## fast-cgi 协议模式
fast-cgi是cgi模式的升级版,它像是一个常驻型的cgi,只要开启后,就可一直处理请求,不再需要结束进程, 调用原理大概为:
web服务器 fast-cgi 进程管理器初始化 -> 预先 fork n个进程
用户请求 -> web服务器接收请求 -> 交给 fast-cgi 进程管理器 -> fast-cgi 进程管理区接收,给其中一个空闲 fast-cgi 进程处理 -> 处理完成,fast-cgi进程变为空闲状态,等待下次请求->web服务器接收内容->返回给用户
_**PS: 注意,fast-cgi 和 cgi 都是一种协议,开启的进程是单独实现该协议的进程**_
### 模块模式
apache+php运行时,默认使用的是模块模式,它把php作为apache的模块随apache启动而启动,接收到用户请求时则直接通过调用mod\_php模块进行处理。
## php-cli模式
php-cli模式属于命令行模式,对于很多刚开始学php就开始wamp,wnmp的开发者来说是最陌生的一种运行模式
该模式不需要借助其他程序,直接输入php xx.php 就能执行php代码
命令行模式和常规web模式明显不一样的是:
* 没有超时时间
* 默认关闭buffer缓冲
* STDIN 和 STDOUT 标准输入/输出/错误 的使用
* `echo` `var_dump`, `phpinfo` 等输出直接输出到控制台
* 可使用的类/函数 不同
* `php.ini` 配置的不同
> 详细内容:http://php.net/manual/zh/features.commandline.php
## ISAPI
ISAPI 全称是 **Internet Server Application Program Interface** ,它是微软提供的一套面向 Internet 服务的 API 接口。一个 ISPAI 的 DLL,可以在被用户请求激活后长驻内存,等待用户的后续请求。
**ISAPI** 模式只能运行于 Windows 环境,当 ISAPI 的 DLL 应用程序和 WWW 服务器处于同一个进程中时,效率会明显高于 CGI。
PHP 5.3.1 版本开始不再支持 ISAPI 模式,因此看不到 `php5isapi.dll` 这个文件。
- 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