mod_fastcgi和mod_fcgid的区别

mod_fcgid是一个跟mod_fastcgi二进制兼容的Apache module。

原 来的mod_fastcgi因为实现方式的限制,所以可能会创建了很多不必要的进程,而实际上只需要更少的进程就能处理同样的请求。 mod_fastcgi的另外一个问题是每一个CGI的多个进程都共享同一个管道文件,所有到同一个fastcgi的通讯都通过这个同名的管道文件进行, 这样当出现通讯错误的时候,根本不知道正在通讯的是哪一个fastcgi,于是也没有办法将这个有问题的进程杀死。

mod_fcgid尝 试使用共享内存来解决这个问题。共享内存里面有当前每个fastcgi进程的信息(包括进程号,进程使用的管道文件名等),当 每次尝试请求fastcgi工作的时候,Apache将会首先在共享内存里面查询,只有在共享内存里面发现确实没有足够的fastcgi进程了,才会创建 新的进程,这样可以保证当前创建的进程数量刚好能够处理客户的请求。另外,由于每一个fastcgi进程使用不同名称的管道文件,所以可以在通讯失败的时 候知道到底哪个fastcgi进程有问题,而能够尽早的将其剔除。

程序实现的目标

跟mod_fastcgi二进制兼容
只要在Apache中用mod_fcgid替换了mod_fastcgi,就能工作。原来的fastcgi程序不用重新编译,立即可以工作。

更严格的控制进程的创建
Apache中每一个request handler都能通过共享内存知道当前系统fastcgi运行的情况,这样可以防止过度的创建fastcgi进程,无谓的消耗系统的资源。

简单清晰的进程创建速度控制策略


一个fastcgi都会维护一个计数器,这个计数器在程序创建和程序结束的时候都会增加,而这个计数器每秒会减1,直到0。当计数器的值高于某个
阀值的时候,程序就会停止创建,直到计数器的值回落。这样既可以保证在请求突然增多的时候能够快速反应(特别是Apache刚启动,需要大量创建程序的时
候),也能保证当fastcgi程序有问题,不断重起的时候,重起的速度不会过高而消耗过多的系统资源。

自动检测出有问题的进程

因为每个fastcgi使用自己特定的管道文件,所以在通讯错误的时候可以轻易知道哪一个程序出现问题,而尽早的将其剔除。

可移植性

照Apache2的习惯,所有可移植的代码都放到一起,所有不可移植的代码都在arch目录下分开存放。当前已经测试过的系统包括 Linux ,
FreeBSD(已经包含入FreeBSD4和FreeBSD5的port中), Solaris, Windows 2000.

支持FastCGI方式运行的PHP


以直接支持以FastCGI方式运行的PHP。因为PHP现在还不能保证所有的扩展代码都是线程安全的,所以并不建议在Apache2的线程模式
下使用mod_php。而以FastCGI方式运行的PHP则是其中一个解决办法。另外,使用mod_fcgi还可以在不修改任何PHP代码的情况下,获
得数据库连接池的功能,大大减少PHP进程到数据库的连接。

时间: 2024-08-15 08:30:02

mod_fastcgi和mod_fcgid的区别的相关文章

关于apache2.4 模块 mod_php mod_fastcgi mod_fcgi

故障:apache2.4 web服务器下,加载fastcgi 模块,始终无法加载 分析:1,查找文档过程中发现,apache 还有另外一个功能相近的模块,mod_fcgid,很多人说,fcgid要比fastcgi兼容性要好,因为mod_fastcgi是fastCGI.com的项目,遵循FastCGI授权条款.mod_fcgid是Apache基金会负责的项目,使用的是Apache-2.0授权条款.因此,不仅主要负责单位不同,其授权方式也不同 2,mod_fastcgi的授权不是标准的自由/开放源码

php之道

PHP The Right Way. Tweet 欢迎 目前网络上充斥着大量的过时资讯,让 PHP 新手误入歧途,并且传播着错误的实践以及不安全的代码.PHP 之道 收集了现有的 PHP 最佳实践.编码规范和权威学习指南,方便 PHP 开发者阅读和查找 使用 PHP 沒有规范化的方式.本网站主要是向 PHP 新手介绍一些他们没有发现或者是太晚发现的主题, 或是经验丰富的专业人士已经实践已久的做法提供一些新想法.本网站也不会告诉您应该使用什么样的工具,而是提供多种选择的建议,并尽可能地说明方法及用

一个Apache安装多个版本的PHP

我的服务器centos6.5安装了xampp,php6.5版本的.已经有好几个网站在上面运行了,但是后面要安装该死的ecshop,无奈要装php5.2,因此就想如何能在一个apache上安装多个版本的php,然后就找到这篇文章,并且在本地环境测试成功.中途编译Php5.2,安装mod_fcgid,碰到很多小问题,百度谷歌一下基本解决,但是编译Php5.2启用openssl的话有问题没解决,就直接去掉openssl的选项了. 转载自:http://linuxplayer.org/2011/05/i

nginx_笔记分享_php-fpm详解

参考 http://syre.blogbus.com/logs/20092011.htmlhttp://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/http://www.larro.cn/?p=35 nginx php php-fpm  cgi fastcgi  等等它们之间的关系让人糊涂,google一天发现有不少介绍的好文章,不过都是各说各的不免让人抓狂,特此将上面几位前辈的文章重新整理了一下,本着拿 来主义

[转]php-fpm配置具体解释

[转]php-fpm配置具体解释 php-fpm具体解释 原文链接:http://php-fpm.anight.org/wiki:http://www.php-fpm.com/翻译:http://syre.blogbus.com/logs/20092011.html 什么是 FastCGI FastCGI 是一个可伸缩.快速的在web server和脚本语言间通迅的接口.关于FastCGI技术的很多其它信息能够在官方站点和Wikipedia看到. FastCGI 被很多脚本语言所支持,包括 ph

Apache下PHP的几种工作方式

PHP在Apache中一共有三种工作方式:CGI模式.Apache模块DLL.FastCGI模式. 一.CGI模式 PHP 在 Apache 2中的 CGI模式.编辑Apache 配置文件httpd.conf 如下: # PHP4 版写法 ScriptAlias /php/ "D:/php/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php.exe" # PH

php5 NTS和TS版本的区别

php5 non-thread-safe和thread-safe这两个版本的区别 从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面聚友将为您讲述. 先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查:Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以

mod_php VS mod_fastcgi

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 在

详解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要生成一个动态页面,系统就必须启动一个新的