PHP: CGI,FASTCGI,php-fpm,mod_php,mod_cgi,mod_fcgid 解释

有些常用概念不注意的时候会有所混淆,简略罗列下。

1. CGI是通用网关接口,HTTP服务器使用这样的接口程序来和其他应用(比如PHP的解释器程序)通讯,由于CGI采用fork and execution方式,

每次请求都需要新建立CGI程序来进行处理,这样导致性能低下。

2. FASTCGI是常驻内存的CGI,实际上是对CGI程序的进程管理,通过master进程接受请求,分发给worker进程,并可以prefork worker进程,减少CGI进程创建、初始化和销毁的开销,从而提高性能。

3. mod_php是apache的内置php解释模块,使用prefork方式,不需要额外的进程来做通讯和应用解释,显然mod_php比mod_cgi这样方式性能要好得多,但缺点是把应用和HTTP服务器绑定在了一起,另外每个Apache进程都需要加载mod_php而不论这个请求是处理静态内容还是动态内容,这样导致浪费内存,效率下降,此外php.ini文件的变更需要重新启动apache服务器才能生效,这使得无法进行平滑配置变更。

4. php-fpm是常和nginx搭配使用的程序,php-fpm实际上就是对FASTCGI协议的一个加强实现,已经被纳入PHP内核,可以通过--enable-fpm编译选项来启用,php-fpm支持配置的平滑变更(通过fork新的worker进程),性能好,内存使用效率高,这也是为什么nginx+php-fpm的配置组合会替代apache+mod_cgi以及apache+mod_php的重要原因。

5. mod_fcgid是apache的fastcgi实现,性能也很好,在apache的2.4以后的版本中得到支持。

参考阅读:

http://httpd.apache.org/mod_fcgid/

http://www.openlogic.com/wazi/bid/209956/mod_php-vs-FastCGI-vs-PHP-FPM-for-Web-Server-Scripting

http://www.eschrade.com/page/why-is-fastcgi-w-nginx-so-much-faster-than-apache-w-mod_php/

http://serverfault.com/questions/6733/php-what-are-the-advantages-of-fastcgi-over-mod-php

by cstopery

时间: 2024-10-10 04:06:57

PHP: CGI,FASTCGI,php-fpm,mod_php,mod_cgi,mod_fcgid 解释的相关文章

详解php的安装模式---CGI,FASTCGI,php-fpm,mod_php,mod_cgi,mod_fcgid

1. CGI CGI是通用网关接口,HTTP服务器使用这样的接口程序来和“其他程序”(比如PHP的解释器程序)通讯,这个“其他程序”可以使用任何计算机语言来编写,它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器. CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交.CGI方式的缺点也越来越突出.因为HTTP要生成一个动态页面,系统就必须启动一个新的

PHP运行模式(cgi,fast-cgi,cli, ISAPI ,web模块模式)【转载】

PHP运行模式有5钟: 1)cgi 通用网关接口(Common Gateway Interface))2)fast-cgi 常驻 (long-live) 型的 CGI3)cli  命令行运行   (Command Line Interface) 4)ISAPI模式(Windows中使用的) 5)web模块模式 (apache等web服务器运行的模块模式) 1.  CGI(Common Gateway Interface) CGI即通用网关接口(Common Gateway Interface),

什么是CGI FastCGI PHP-CGI PHP-FPM Spawn-CGI?它们之间的关系

1. CGI: Common Gateway Interface外部应用程序: CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程.CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器.能够让用户访问某种特定动态资源(例*.cgi)时,触发web服务器,让web服务器根据CGI协议调用额外的应用程序(或进程)来执行这段动态程序,将这段动态程序格式化成html的代码再返回给web服务器.它就是让WEB服务器跟应用程序服

CGI,FastCGI,php-cgi,php-fpm的关系

参考自http://segmentfault.com/q/1010000000256516 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. web server(比如说nginx)只是内容的分发者.比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据.好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来

[转] Nginx + CGI/FastCGI + C/Cpp

接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标准输入 2.     FastCGI 3. nginx cgi/fastcgi 3.1. nginx + fastcgi 3.1.1. spawn-fcgi 3.1.2. 编写fastcgi应用程序 3.1.3. nginx fastcgi

Nginx + CGI/FastCGI + C/Cpp

http://www.cnblogs.com/skynet/p/4173450.html Nginx + CGI/FastCGI + C/Cpp 2014-12-19 11:05 by 吴秦, 19794 阅读, 6 评论, 收藏, 编辑 接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标

cgi fastcgi php-cgi php-fpm

cgi  fastcgi  php-cgi  php-fpm 详解 参考: 摘至:http://www.cnblogs.com/thinksasa/p/4497567.html 详说fastcgi,php-fpm的区别:http://segmentfault.com/q/1010000000256516 注:只为个人收藏积累用 什么是CGI.FastCGI.PHP-CGI.PHP-FPM.Spawn-FCGI?:http://www.mike.org.cn/articles/what-is-cg

Web服务器和动态语言如何交互--CGI&amp;FastCGI&amp;FPM浅谈

一个用户的Request是如何经过Web服务器(Apache,Nginx,IIS,Light)与后端的动态语言(如PHP等)进行交互并将结果返回给用户的呢? 本文浅谈个人观点,可能有误,欢迎拍砖,共同学习. 一. 首先明确几个概念,以便后续说明 CGI:(Common Gateway Interface)Http服务器与后端程序(如PHP)进行交互的中间层. 工作原理及处理方式(fork-and-execute模式): 1.当Web Server有Request到达 2.fork一个CGI进程或

CGI/FastCGI/mod_php工作原理

先了解一下普通cgi的工作流程:web server收到用户请求,并把请求提交给cgi程序,cgi程序根据请求提交的参数作相应处理,然后输出标准的html语句返回给web server,web server再返回给客户端,这就是普通cgi的工作原理. 从上面看,cgi所要实现的不过是动态网页而已,这种处理方式的特点就是每接到一个请求,web server都要fork出一个单独的cgi程序的进程来处理,这种方式的好处是把web server和具体的程序处理独立开来,结构清晰,可控性强,同时缺点就是