CGI是一种协议,经过这种协议(或约定的规则),WEB服务器能够和应用程序进行数据交互处理。php
CGI包含三个方面:前端
简而言之,CGI在环境变量中,描述了请求的基本信息;在标准输入中,描述了请求主体是如何传入的;在标准输出中,描述了请求响应是如何输出的。segmentfault
FASTCGI 是 CGI 的改进方案,主要优势是把动态语言和 HTTP Server 分离开来。服务器
所以 Nginx 与 PHP/PHP-FPM 常常被部署在不一样的服务器上,以分担前端 Nginx 服务器的压力。数据结构
使 Nginx 专注处理静态请求和转发动态请求,而 PHP/PHP-FPM 服务器专注解析 PHP 动态请求。并发
CGI:app
FASTCGI:高并发
FastCGI原理图spa
Nginx 将 CGI 请求发送给 Socket:pwa
PHP-FPM 是 FASTCGI 协议的一种实现,在 PHP5.3.× 版本中就开始内置该进程管理器。
Spawn-fcgi是 HTTP 服务器 lighttpd 的一部分,目前已经独立成为一个项目,通常与 lighttpd 配合使用来支持PHP。
可是 ligttpd 的spwan-fcgi 在高并发访问的时候,会出现内存泄漏甚至自动重启 FastCGI 的问题。