`

(转)php安装模式mod_php和Fastcgi的选择与对比

 
阅读更多

转自——http://blog.csdn.net/21aspnet/article/details/3280512

 

安装php又面临到了模式的选择,以前都是选择mod_php模式,因为这样安装比较方便哈,今天突然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面的讨论,现在发出来留一个记号,以便进一步研究:

第一篇:php在apache中安装模式的区别:fastcgi和mod_php

     说到fastCgi就不得不说Cgi。
     CGI英文全称是 Common Gateway Interface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写,它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。

     CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交。CGI方式的缺点也越来越突出。因为HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工作。这就出现了FastCGI。

   百度百科关于FastCGI


 2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
 3. FastCGI 支持 C/C++,Ruby, Perl,Tcl,Java,Python 等程序语言。
 4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
 5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
 6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
 7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
 8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

     mod_php就是把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言,不需要每一个请求就启动PHP解释器来解释PHP。

第二篇:mod_php or fastcgi性能比较与选择

用php肯定少了不这个问题的选择,cgi自然就不必说了,但是mod_php和fastcgi的争论确还是比较多的。
找了一些资料,晾在这,可供参考。
首先,性能应该是大家最关心的问题了,除了mod_php和fastcgi 的 benchmark,还有一些服务器差别的测试,如apache vs lighthttpd

mod_php, LightTPD, FastCGI - What’s fastest?
     这个bechmark的结果是 Apache(prefork)+Fastcgi+php的性能是最好的。超过了apache+mod_php,甚至也超过了lightty+fastcgi+php。当然,这个结果得出值相差都很小。另外,以上说的几个结果都使用了APC加速,使用APC后性能提高1倍以上。

php4-mod-vs-cgi
   这个bechmark是在php4的环境下完成的。其summary.txt的内容如下。


------------------------

PHP4 module, very simple script (phpinfo.php): requests/s
plain 130.04
+turckcache 129.42
+turckcache+zend-optimizer 125.50

PHP4 module, very complex script (insurance application): requests/s
plain 1.84
+turckcache 6.23
+turckcache+zend-optimizer 5.58
+optimizer 1.58

PHP4 CGI, very simple script (phpinfo.php): requests/s
plain 22.69
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 21.23

PHP4 CGI, very complex script (insurance application): requests/s
plain 2.00
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 1.72

* = turkcache doesn't support caching of the PHP scripts in CGI mode

上面的结果我觉得需要关注的是无cache的情况,因为使用mod_php或fastcgi主要还是用来生成动态页面。前面的cache有更好的工具来实现,如squid。所以,这个结果也是fastcgi胜出,相差也不大。

http://buytaert.net/drupal-performance?page=1
   这个文章的结果和上面两个刚好相反。使用fastcgi代替mod_php后,”When switching from

to

we observe a 63% slowdown for anonymous visitors, and a 18% slowdown for authenticated visitors.”以下是图表

 

另外,benchmark中也做了和lightty的比较,如下图:

 

这个文章的结论是Apache+mod_php性能好于Apache+fastcgi。另外,Apache+mod_php略好于lightty+fastcgi。

4 最后看看 fastcgi官方自己怎么说的吧
    Of course, the answer is that it depends upon the application. A more complete answer is that FastCGI often wins by a significant margin, and seldom loses by very much.

5 结论是,还是根据自己的应用测一下吧….

最后,个人观点
如果mod_php和fastcgi的性能相差不是很大的话,还是倾向于fastcgi的,这种方式毕竟更灵活、安全和简单。
1 使用fastcgi,你的web server 可以比较简单的切换,可以测试不同的服务器,Apache,lightty,ngix 等等,不需要有代码的修改
2 如果想换脚本的实现,如不用php,而是改成perl,python之类的,web服务器也不需要任何的改动
3 web server和fastcgi可以用不同的帐号运行,带来了一定的安全隔离
4 只在Apache中编个mod_fastcgi可以说是简单多了,把mod_php编进apache时,出问题时很难定位是php的问题还是apache的问题,我就见过这样的core,函数调用几十层,一点头绪都没有

分享到:
评论

相关推荐

    mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据

    ### mod_php和mod_fastcgi及php-fpm的详细介绍与对比 #### 一、概念解析 **mod_php** 和 **mod_fastcgi** 是两种常见的用于在Apache Web服务器中部署PHP应用程序的方法,而 **php-fpm** (PHP FastCGI Process ...

    [好文]mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据.pdf

    结果显示,FastCGI模式下的PHP性能优于mod_php,尤其是在大型网站和高负载环境下。 FASTCGI配置项对性能的影响主要体现在进程数量、缓冲区大小、超时设置等方面。例如,增加进程数量可以提高并行处理能力,但过多的...

    (完整版)[好文]mod-php和mod-fastcgi和php-fpm的介绍-对比-和性能数据.doc

    通过对比和测试,我们可以得出结论:mod_php 虽然方便,但资源消耗大;mod_fastcgi 和 PHP-FPM 则通过进程分离和更精细的管理提供了更好的性能和可扩展性。在实际应用中,应根据服务器硬件资源、并发需求以及系统...

    mod-fastcgi-2.4.6 for apache2.40

    这个文件可能包含了编译和安装mod_fastcgi所需的所有依赖,以确保在Apache 2.4.7上正确工作。安装时,通常需要将这些库文件解压,然后使用Apache的配置工具(如`apxs`)编译并链接到Apache服务器中。 **安装与配置*...

    apache 2. 环境下编译mod_fastcgi出错处理

    LoadModule fastcgi_module modules/mod_fastcgi.so <IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiIpcDir /var/run/mod_fastcgi/ <Directory /path/to/fastcgi/apps> AllowOverride All ...

    mod_fcgid-2.3.9.tar.gz

    6. 编译和安装模块:`make && sudo make install` 7. 修改Apache的配置文件(通常是httpd.conf),将以下行添加到适当位置: ``` LoadModule fcgid_module modules/mod_fcgid.so <IfModule fcgid_module> ...

    mod_fcgid-2.3.9

    2. 使用Apache的开发库编译和安装模块,例如: ``` ./configure --prefix=/usr --with-apxs=/usr/bin/apxs make sudo make install ``` 3. 配置Apache,将`mod_fcgid`加载到Apache配置文件(如`httpd.conf`)中...

    windows下apache+fastCGI+PHP的安装与配置小计

    本文主要介绍了在 Windows 系统环境下如何安装与配置 Apache、FastCGI 和 PHP,使之能够协同工作并支持 PHP 应用程序的运行。通过本文的学习,您将能够掌握在 Windows 平台上搭建 LAMP 或 WAMP (Windows + Apache + ...

    mod_php、FastCGI、PHP-FPM等PHP运行方式对比

    在PHP的运行环境中,有多种不同的处理方式,其中包括mod_php、FastCGI和PHP-FPM。这些方式决定了Web服务器如何与PHP解释器交互,从而处理动态PHP内容。 **mod_php** 是Apache Web服务器中集成PHP解释器的常见方式。...

    mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_

    标题中的"mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_"提及的是一个特定版本的Apache模块mod_fcgid的Windows 32位构建,该版本是使用Visual Studio 16(可能是VS2019)编译的,并且与JavaScript Socket编程...

    mod_fcgid-2.3.6-win32-x86.zip

    描述 "windows 下 apache 开启fcgid模式 的mod_fastcgi.dll" 指出,此zip文件包含的是Apache服务器在Windows环境下启用FastCGI模式所需的动态链接库(mod_fastcgi.dll)。FastCGI是一种让Web服务器与外部进程(如PHP...

    Fastcgi 中文参考手册(DOC)

    对于 Nginx,可以通过配置文件设置 FastCGI_pass 来指定 FastCGI 服务器的位置。此外,还有一些开源的 FastCGI 应用程序服务器,如 PHP-FPM(PHP FastCGI Process Manager),专门用于优化 PHP 应用程序的性能。 **...

    apache-fastcgi

    2. **获取FastCGI软件**:FastCGI的主要实现有mod_fcgid和mod_fastcgi,这里我们以mod_fcgI为例。首先,从官方网站或者源代码仓库下载mod_fcgid模块。 3. **编译与安装**:解压下载的源码包,进入目录,执行`./...

    fastcgi中文手册.pdf

    例如,在Nginx中,可以使用`fastcgi_pass`指令指定FastCGI服务器的地址。 5. **FastCGI与PHP**: PHP-FPM(FastCGI Process Manager)是PHP的一个扩展,它为PHP提供了FastCGI接口。在PHP环境中,使用PHP-FPM可以...

    Apache2.4 Win64位

    #----------------Fastcgi-------------------------------- LoadModule fcgid_module modules/mod_fcgid.so <IfModule mod_fcgid.c> FcgidMaxRequestsPerProcess 1000 FcgidMaxProcesses 15 FcgidIOTimeout 600 ...

    apache+fastcgi入门文档

    PHP的php-fpm(FastCGI Process Manager)是一个常见的选择,它可以有效地管理PHP FastCGI进程,提供日志记录、错误处理和资源限制等功能。 **安全性与优化** 使用Apache和FastCGI时,安全性和性能优化是关键考虑...

    php检测apache mod_rewrite模块是否安装的方法

    在某些情况下,例如通过CGI或FastCGI接口运行的PHP脚本,可能无法正确检测到模块,因为这些接口可能不会提供与模块相关的全部信息。 除了以上介绍的方法之外,还可以使用Apache服务器的第三方模块或工具来进行模块...

    mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_源码.rar

    标题中的"mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_源码.rar"指示我们关注的是一个名为mod_fcgid的软件模块的源代码,版本为2.3.10,适配于Windows 32位系统,并且与Visual Studio 2016(VS16)开发环境...

    fastcgi-2.4.0安装包

    3. **编译与安装**:在Linux服务器上,进入解压后的目录,运行以下命令进行编译和安装: ``` cd /usr/local/src/fcgi-2.4.0 ./configure make sudo make install ``` 4. **配置Web服务器**:FastCGI需要与Web...

Global site tag (gtag.js) - Google Analytics