[TOC]
# 运行模式
******
php有着5种运行模式,常见的有4种:
<br />
## cgi 协议模式
cgi 模式 通用网关接口(Common Gateway Interface),它允许 web 服务器通过特定的协议与应用程序通信,调用原理大概为:
用户请求--->Web 服务器接收请求--->fork 子进程 调用程序/执行程序--->程序返回内容/程序调用结束--->web 服务器接收内容--->返回给用户 由于每次用户请求,都得 fork 创建进程调用一次程序,然后销毁进程,所以性能较低。
<br />
## fast-cgi 协议模式,
fast-cgi 是 cgi模式的升级版,它像一个常驻型的 cgi,只要开启后,就可一直处理请求,不再需要结束进程,调用原理大概为:
web 服务器 fast-cgi 进程管理器初始化--->预先 fork n个进程
用户请求--->web 服务器接收请求--->交给 fast-cgi 进程管理器--->fast-cgi 进程管理器接收,给其中一个空闲 fast-cgi 进程处理--->处理完成,fast-cgi 进程变为空闲状态,等待下次请求--->web 服务器接收处理完成的内容--->返回给用户
> 注意:fast-cgi 和 cgi 都是同一种协议,开启的进程是单独实现该协议的进程。
<br />
## 模块模式
apache + php 运行时,默认使用的是模块模式,它把 php 作为 apache 的模块随 apache 启动而启动,接收到用户请求则直接通过调用 mod_php 模块进行处理,详细内容可自行百度。
<br />
## 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](http://php.net/manual/zh/features.commandline.php)
<br />
## 其他
> 本文将以上除了 php-cli 的模式,都定义为常规 web 访问模式。
- 引言
- Introduction
- 运行模式
- php-fpm
- php-cli
- 基础介绍
- 网络协议
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 会话管理
- cookie
- session
- api/token
- linux基础
- lnmp安装
- 命令
- 进程管理
- 扩展安装
- 端口监控
- 防火墙说明
- php7.0
- 部分新特性
- php回调/闭包
- 回调事件
- 闭包/匿名函数
- php多进程
- 多进程开启
- 进程通信
- 进程信号
- 僵尸进程
- 孤儿进程
- 守护进程
- 同步/异步
- 阻塞/非阻塞
- 协程
- Swoole
- 初始Swoole
- 运行机制
- 生命周期
- composer使用
- EasySwoole
- 设计理念
- 组件说明
- 运行过程
- demo
- 提问的艺术