文档详情

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

发布:2017-06-18约9.03千字共16页下载文档
文本预览下载声明
mod_php VS mod_fastcgi 目录 什么是mod_php和mod_fastcgi 1 工作原理 1 mod_php 2 mod_fastcgi 3 mod_factcgi的三种配置方式 4 静态配置 5 动态配置 5 远程方式 6 php-fpm 6 性能测试 8 名称解释 8 测试内容 8 测试结果 8 fastcgi配置项对性能的影响。 11 分析结论 13 附录 14 apache+mod_fastcgi+php搭建 14 什么是mod_php和mod_fastcgi 在lamp体系中,对于apache端php的配置,我们最常用的就是mod_php, 它把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言,不需要每一个请求就启动PHP解释器来解释PHP。 和把webserver与php绑定起来的方式不同,fastcgi是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具 图1 php架构图 上面是php的架构图,从图上可以看到, SAPI提供了一个和外部通信的接口,使得PHP可以和其他应用进行交互数据默认提供了很多种SAPI,常见的给apache的mod_php5,CGI,给IIS的ISAPI,还有Shell的CLI sapi_cgibin_ub_write, 这个告诉了Zend,如何输出数据 图2 mod_php工作原理 mod_fastcgi 在说明fastcgi之前,先了解一下普通cgi的工作流程:fastcgi是基于cgi架构的扩展,他的核心思想就是在web server和具体cgi程序之间建立一个智能的可持续的中间层,统管cgi程序的运行,这样web server只需要将请求提交给这个层,这个层再派生出几个可复用的cgi程序实例,然后再把请求分发给这些实例,这些实例是可控的,可持续,可复用的, 因此一方面避免了进程反复fork,另一方面又可以通过中间层的控制和探测机制来监视这些实例的运行情况,根据不同的状况fork或者回收实例,达到灵活 性和稳定性兼得的目的。FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。 图3 mod_fastcgi工作原理 从图上可以看出, apache启动后,mod_fastcgi会在启动多个cgi程序,也就是php-cgi脚本。具体脚本的数目通过配置来指定。当有http请求到来后,httpd进程会选择一个当前空闲的一个php-cgi程序来执行,执行的方式和mod_php类似,也是通过php-cgi提供的sapi完成交互。查看源码,可以发现对于cgi的sapi,和mod_php不同,它是把结果输出到fastcgi提供的stdout上,fastcgi再将数据返回给httpd完成交互。 mod_factcgi的三种配置方式 基于mod_fastcgi的fastcgi应用一共有三种配置方式:静态、动态和远程。他们通过apache配置中的伪指令来代替,对应于三种方式的伪指令分别是FastCgiServer, FastCgiConfig, 以及FastCgiExternalServer。 对于静态和动态这两种方式,apache将通过mod_fastcgi自带的进程管理工具(fcgi-pm)来管理fastcgi应用程序,也就是php-cgi。fcgi-pm在apache启动时就被自动激活了。相对于前两种,远程模式下,php-cgi不由fcgi-pm来管理,apache不会去关心php-cgi程序的状态。 下面详细说一下三种配置方式 静态配置 通过FastCGIServer 伪指令将文件名定义为静态 FastCGI 应用程序。初始时需要指定启动的php-cgi进程数目,默认为1个。apache运行过程中,如果静态应用程序实例因为任何原因死了,那么fcgi-pm将衍生另一个实例来替换。 语法 FastCgiServer file name [options] 重要参数说明 idle-timeout n(30 秒)。在请求异常终止和事件记录在 error LogLevel 前,所允许的 FastCGI 应用程序不活动秒数。仅当存在与 FastCGI 应用程序的暂挂连接时,该不活动计时器才应用。如果应用程序在此期间不响应队列的请求,那么请求异常终止。如果与应用程序的通信完成,但是与客户机的通信未完成(缓存的响应),那么超时不应用。 processes n(1)。在服务器初始化时衍生的应用程序实例数。 port n 无。应用程序用于与 Web 服务器通信的 TCP 端口号(1-65535)。此选项使应用程序可
显示全部
相似文档