🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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 访问模式。