PHP的工作原理
概述
CGI,通用网关接口,
用于WEB服务器和应用程序间的交互,定义输入输出规范,
用户的请求通过WEB服务器转发给FastCGI进程,
FastCGI进程再调用应用程序进行处理,如php解析器,应用程序的处理结果如html返回给FastCGI,FastCGI返回给Nginx 进行输出。
假设这里WEB服务器是Nginx,应用程序是 PHP,而 php-fpm 是管理 FastCGI 的,这也就是 php-fpm,FastCGI,和 Nginx 之间的关系。
FastCGI 用来提高 cgi 程序性能,启动一个master,再启动多个 worker,不需要每次解析 php.ini.
而 php-fpm 实现了 FastCGI 协议,是 FastCGI 的进程管理器,支持平滑重启,可以启动的时候预先生成多个进程。
协议模式
| 协议模式 | 定义 | 用途 | 备注 |
|---|---|---|---|
| CGI | 通用网关接口(Common Gateway Interface) | 用于WEB服务器和应用程序间的交互,定义输入输出规范 | 用户的请求通过WEB服务器转发给Fast-CGI进程 |
| Fast-CGI | CGI模式的升级版 | 用来提高 CGI 程序性能 | 启动一个master,再启动多个 worker,不需要每次解析 php.ini |
| PHP-Cli | 命令行模式 | - | 在控制台输入php xx.php 就能执行php代码 |
| PHP-FPM | - | Fast-CGI 的进程管理器 | 实现了 Fast-CGI 协议,支持平滑重启,可以启动的时候预先生成多个进程 |
| PHP | - | 应用程序 | - |
| NGINX | - | WEB服务器 | - |
Fast-CGI的工作原理
web服务器fast-cgi进程管理器初始化->预先fork n个进程
用户请求->web服务器接收请求->交给fast-cgi进程管理器->fast-cgi进程管理区接收,给其中一个空闲fast-cgi进程处理->处理完成,fast-cgi进程变为空闲状态,等待下次请求->web服务器接收内容->返回给用户。
PHP-FPM的工作原理
php-fpm启动->生成n个fast-cgi协议处理进程->监听一个端口等待任务
用户请求->web服务器接收请求->请求转发给php-fpm->php-fpm交给一个空闲进程处理->进程处理完成->php-fpm返回给web服务器->web服务器接收数据->返回给用户。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael's Blog!
评论



