CGI是什么?
CGI 是一种协议,解决 web 服务器和外部应用程序数据互通。
前期的 WEB 服务器只能够处理静态文件,随着 web 的技术不断发展,开始出现了动态技术,但是 WEB 服务器并不能直接解释动态脚本,需要有专门的解释器来运行。后面就有了 CGI(Common Gateway Interface)通用网关接口。简单的来说就是 WEB 服务器和外部应用程序的一种协议。使得 Request 的 Header 头可以设置为进程的环境变量,HTTP 请求的 Body 正文设置成进程的标准输入,进城的标准输出设置成 HTTP 响应 Response ,包含 Header 头和 Body 正文
PHP-CGI 是什么
PHP-CGI 是遵守了 CGI 协议的应用程序。也就是 PHP 的解释器。
FastCGI
FastCGI 也是一种协议,是 CGI 协议的升级版本。
由于 CGI 每次运行都需要从加载配置文件文件开始,反复加载重复的数据,导致运行效率低下。如果 CGI 程序能够保存在内存中并接收由 FastCGI 进程进行管理,则可以提供更好的性能、伸缩性等
FastCGI 的运行模式
- WEB 服务器启动时载入 FastCGI 进程管理。例如 Apache 的 Module
- FastCGI 进程自身的初始化,并启动多个 PHP-CGI 解释器等待链接
- 当客户端请求到达 Web 服务器时,FastCGI 进程管理器选择并连接一个 PHP-CGI 解释器,WEB 服务器将 CGI 环境变量和标准输入发送到 FastCGI 的子进程 PHP-CGI 解释器。
- FastCGI 子进程完成相关的处理后,断开连接并返回相关数据。接着 FastCGI 子进程继续等待或处理新的 WEB 请求
PHP-FPM
PHP-FPM 是遵守了 FastCGI 协议的 PHP-CGI 的进程管理。
参考资料:
|