ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 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` 这个文件。