CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI能够用任何一种语言编写,只要这种语言具备标准输入、输出和环境变量。如php,perl,tcl等。php
spawn-fcgi与PHP-FPM前端
前面介绍过,FastCGI接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是FastCGI进程管理器,或者称之为FastCGI引擎, spawn-fcgi与PHP-FPM就是支持PHP的两个FastCGI进程管理器。
下面简单介绍spawn-fcgi与PHP-FPM的异同。
服务器
spawn-fcgi是HTTP服务器lighttpd的一部分,目前已经独立成为一个项目,通常与lighttpd配合使用来支持PHP,可是ligttpd的spwan-fcgi在高并发访问的时候,会出现内存泄漏甚至自动重启FastCGI的问题。
网络
Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才能够对PHP进行解析,所以Nginx+spawn-fcgi的组合也能够实现对PHP的解析,这里不过多讲述。
架构
PHP-FPM也是一个第三方的FastCGI进程管理器,它是做为PHP的一个补丁来开发的,在安装的时候也须要和PHP源码一块儿编译,也就是说PHP-FPM被编译到PHP内核中,所以在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好不少,所以,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。
并发
FastCGI 的主要优势是把动态语言和HTTP Server分离开来,因此Nginx与PHP/PHP-FPM常常被部署在不一样的服务器上,以分担前端Nginx服务器的压力,使Nginx专注处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专注解析PHP动态请求。app
从php5.3.3之后php-fpm就已是php的一部分了。socket
http://book.51cto.com/art/201202/314842.htm分布式