Windows里配置Apache2.2+PHP5.3+mod_fcgid运行高效的FastCGI模式
日发现win平台的Apache也可以跑FastCGI模式了,就折腾了一会。FastCGI模式是经实践证明了比传统的模块模式运行效率高很多。记录如下:
一、mod_fcgid配置说明
1、首先下载mod_fcgid-2.3.6-win32-x86.zip,Linux版本的也有:http://httpd.apache.org/download.cgi#mod_fcgid 将解压的相关文件复制到apache的“modules”目录下。
2、打开apache的配置文件“httpd.conf”,文件最后加入如下配置:
LoadModule fcgid_module modules/mod_fcgid.so
AddHandler fcgid-script .fcgi .php
#php.ini的存放目录
FcgidInitialEnv PHPRC “D:/Server/PHP/php-5.3.-nts”
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS
#php-cgi每个进程的最大请求数
FcgidMaxRequestsPerProcess
#php-cgi最大的进程数
FcgidMaxProcesses
#最大执行时间
FcgidIOTimeout
FcgidIdleTimeout
#php-cgi的路径
FcgidWrapper “D:/Server/PHP/php-5.3.-nts/php-cgi.exe” .php
AddType application/x-httpd-php .php
3、告诉APACHE执行方式。修改你的配置如下:(vhosts.conf)
<Directory “D:/Web”>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
也可以:
<VirtualHost *:>
DocumentRoot "D:\PHPstudy\PHPTutorial\WWW\vhosts\test.8g.com"
ServerName test.8g.com
ServerAlias test.8g.com
<Directory "D:\PHPstudy\PHPTutorial\WWW\vhosts\test.8g.com">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
4、重启apache。
5、如果配置没错的话,你运行phpinfo.php可以看到有如下的输出信息:
Apache/2.2. (Win32) mod_ssl/2.2. OpenSSL/0.9.8o mod_fcgid/2.3.
二、mod_fcgid概念说明以及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_fcgid程序实现的目标
1、跟mod_fastcgi二进制兼容
只要在Apache中用mod_fcgid替换了mod_fastcgi,就能工作。原来的fastcgi程序不用重新编译,立即可以工作。
2、更严格的控制进程的创建
Apache中每一个request handler都能通过共享内存知道当前系统fastcgi运行的情况,这样可以防止过度的创建fastcgi进程,无谓的消耗系统的资源。
3、简单清晰的进程创建速度控制策略
每一个fastcgi都会维护一个计数器,这个计数器在程序创建和程序结束的时候都会增加,而这个计数器每秒会减1,直到0。当计数器的值高于某个阀值的时候,程序就会停止创建,直到计数器的值回落。这样既可以保证在请求突然增多的时候能够快速反应(特别是Apache刚启动,需要大量创建程序的时 候),也能保证当fastcgi程序有问题,不断重起的时候,重起的速度不会过高而消耗过多的系统资源。
4、自动检测出有问题的进程
因为每个fastcgi使用自己特定的管道文件,所以在通讯错误的时候可以轻易知道哪一个程序出现问题,而尽早的将其剔除。
5、可移植性
遵照Apache2的习惯,所有可移植的代码都放到一起,所有不可移植的代码都在arch目录下分开存放。当前已经测试过的系统包括 Linux , FreeBSD(已经包含入FreeBSD4和FreeBSD5的port中), Solaris, Windows 2000.
6、支持FastCGI方式运行的PHP
可以直接支持以FastCGI方式运行的PHP。因为PHP现在还不能保证所有的扩展代码都是线程安全的,所以并不建议在Apache2的线程模式 下使用mod_php。而以FastCGI方式运行的PHP则是其中一个解决办法。另外,使用mod_fcgi还可以在不修改任何PHP代码的情况下,获得数据库连接池的功能,大大减少PHP进程到数据库的连接。
转: http://www.ha97.com/3977.html
Windows里配置Apache2.2+PHP5.3+mod_fcgid运行高效的FastCGI模式的更多相关文章
- Windows7 64位安装配置Apache2.4+PHP5.4+MySQL5.5+Xdebug
		PHP更新已经到了5.4.7了,之前是用PHPstudy安装的PHP5.2.13版本,今天有空,就把之前的集成安装卸载了.换上了新一代PHP,记录一下.. 环境:Windows7 64位(内部版本76 ... 
- Ubuntu 16.04 环境下配置apache2.4 + php5.6
		相信用惯了Windows的朋友一开始接触Linux是很崩溃的,因为很多东西都是通过命令行来完成的,包括安装绝大多数的开发工具以及环境,那么在Ubuntu下其实可以直接通过apt-get指令来安装apa ... 
- Windows下安装Apache2.4+PHP5.4+Mysql5.7
		注:文中所写的安装过程均在Win7 x86下通过测试,提供的百度云下载链接均为32位安装包,如需Apache和PHP的64位安装包请从官网下载! 一.安装Apache2.4.12 Apache官方下载 ... 
- windows下配置Apache2.4一些改变
		下载地址: http://www.apachelounge.com/download/http://www.apachehaus.com/cgi-bin/download.plx Apache更新到2 ... 
- Windows里如何正确安装Redis以服务运行(博主推荐)(图文详解)
		不多说,直接上干货! 注意 : Redis官方并没有提供Redis的windows安装包,但在github上, 有相关的下载地址. 一.Redis的下载地址 相关的下载地址,如下: ... 
- Windows里如何正确安装Zookeeper以服务运行(博主推荐)(图文详解)
		不多说,直接上干货! 为什么要在Win下来安装Zookeeper呢? 其实玩过大数据的人很清楚,在Linux下我更不说了.在win下,如Disconf .Dubbo等应用. 所以,它的应用是非常广的. ... 
- windows下配置lamp环境(3)---配置PHP5.4
		下面配置php Php文件夹里有两个php.ini-*文件,随便修改一个,去掉后缀,变成php.ini (如图) 打开php.ini ,添加php扩展目录723行左右(其实放哪都无所谓,只不过php. ... 
- Windows下Apache2.2+PHP5安装步骤
		Windows下Apache2.2+PHP5安装 初学者在学习PHP的时候可能都会遇到安装Apache和PHP不成功的问题,于是很多开发者便选择了集成包,一键安装好Apache+PHP+MySQL.但 ... 
- 【php】在Windows2003下配置Apache2.4与php5.4
		直接配置php一直使用如同<[php]本地开发环境的部署与helloworld>(点击打开链接)的一键傻瓜包,被批为极度不专业,关键是这些一键傻瓜包LAMP的版本号不好控制.port什么的 ... 
随机推荐
- linux查看某个端口是被哪个进程占用的
			查看某个端口是被哪个进程占用的: netstat -tunpl | grep 6379 
- oracle维护服务 oracle解决方案 oracle售后服务
			为客户提供的oracle 金牌技术服务内容为: 1.电话服务 (7*24) 热线支持电话800-810-0081 每周7天,每天24小时北京技术支持中心每天都有专人值守.以保证及时与客 ... 
- GPGPU  OpenCL编程步骤与简单实例
			http://www.cnblogs.com/xudong-bupt/p/3582780.html 1.OpenCL概念 OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU.GPU或其 ... 
- go语言基础之普通函数的调用流程
			函数调用流程:先调用后返回,先进后出,函数递归,函数调用自己本分,利用此物点 1.普通函数的调用流程 package main //必须 import "fmt" func fun ... 
- unity 统一替换shader
			camera.SetReplacementShader(shader,"tag"); 可以切了测试性能 
- 使用CSS3实现的player播放按钮
			完成的效果如下 查看效果并下载 Step 1:先了解border的原理: Step 2:HTML代码结构 <section class="playContainer"> ... 
- 20个初学者实用的CSS技巧
			过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来,从而让一个只具备基本CSS理论的初学者都能够轻易地改变网站的样式. 不论你是 ... 
- c# 注册表操作,创建,删除,修改,判断节点是否存在
			用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须 ... 
- 用asp.net还原与恢复sqlserver数据库
			上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了. 我把原作者的类扩充了一下,可以自动识别web. ... 
- ElementUI日期选择器时间选择范围限制
			ElementUI是饿了么推出的一套基于vue2.x的一个ui框架.官方文档也很详细,这里做一个element-ui日期插件的补充,官方文档中使用picker-options属性来限制可选择的日期,这 ... 
