详解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要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工作。这就出现了FastCGI。
CGI采用fork and execution方式,每次请求都需要新建立CGI程序来进行处理,这样导致性能低下。
2. FASTCGI
FASTCGI是常驻内存的CGI,实际上是对CGI程序的进程管理,通过master进程接受请求,分发给worker进程,并可以prefork worker进程,减少CGI进程创建、初始化和销毁的开销,从而提高性能。
3. mod_php
mod_php是apache的内置php解释模块,使用prefork方式,不需要额外的进程来做通讯和应用解释,显然mod_php比mod_cgi这样方式性能要好得多,但缺点是把应用和HTTP服务器绑定在了一起,另外每个Apache进程都需要加载mod_php而不论这个请求是处理静态内容还是动态内容,这样导致浪费内存,效率下降,此外php.ini文件的变更需要重新启动apache服务器才能生效,这使得无法进行平滑配置变更。
4. php-fpm
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
mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据
http://download.csdn.net/detail/ztianfu/4350292
相关文章
- Nginx + PHP(FastCGI)安装配置笔记
- [PHP] apache在worker模式配置fastcgi使用php-fpm详解编程语言
- PHP安装MySQL模块:简单易行(php添加mysql模块)
- PHP与MySQL无缝对接,构建强大数据库应用(php整合mysql)
- 安装Linux下的PHP环境(linux中安装php)
- PHP在Linux上安装:轻松快捷(php安装包linux)
- PHP在Linux系统中的安装与下载(php下载linux)
- Linux系统下如何快速安装PHP(linux命令安装php)
- 在Fedora 16上安装Nginx(带PHP-FPM)+PHP5和MySQL支持
- 在 Linux 上安装 PHP 快速指南(linux下载php)
- PHP向MySQL中安全插入数据(php插入mysql)
- PHP开启Redis之路:快速上手(php开启redis)
- 数据PHP实现MySQL数据导出的实现方法(php导出mysql)
- linux下为已经编译好的php环境添加mysql扩展(php安装完成后如何添加mysql扩展)
- PHP在Linux下安装配置指南(php搭建环境linux)
- Linux环境下,如何高效、简单地编写PHP代码(linux下写php)
- 实现PHP的Redis扩展安装(php安装redis扩展)
- 安装Linux下的PHP:从源码进行编译(linux源码安装php)
- MySQL和PHP解决乱码问题(mysql php 乱码)
- 、mysqlLinux安装PHP和MySQL的指南(linux 安装php)
- Linux系统下快速配置安装PHP环境(linux 安装php)
- Redis在PHP环境下的安装与下载(redis下载 php)
- 如何使用Linux 查找安装PHP的位置?(linux查找php)
- 如何使用动态共享对象的模式来安装PHP
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- PHP学习笔记IIS7下安装配置php环境
- php中使用__autoload()自动加载未定义类的实现代码
- php删除cookie方法详解
- WindowsServer2008(R2)一键安装PHP环境(PHP5.3+FastCGI模式)