php fastcgi是什么?fastcgi怎么实现

特点:

1、持久连接。不必对每一个请求都启动和初始化,速度很快。
2、据说可让php的执行速度快3到30倍。原因是:PHP解释程序被载入内存而不用每次需要时从存储器读取,极大的提升了依靠脚本运行的站点的性能。
3、因为不必对每一个请求都启动和初始化,所以也大大减少了系统资源(CPU)的占用。
4、对原来的php程序来说完全不用修改。
5、只有一个可用的php.ini文件。当要配置多个php.ini文件以适应不同的脚本需要时,你要在其子目录禁用PHP的快速CGI,如此则可保证其它目录继续对cgi有效。

linux下php以fastcgi模式运行

1、linux系统
[root@localhost /]# cat /etc/redhat-release
CentOS release 5.2 (Final)
2、安装apache
下载并解压缩apache,本文演示用的版本是2.2.19
[root@localhost]# wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz
[root@localhost]# tar xvzf httpd-2.2.19.tar.gz

编译和安装apache,本文的目的只是演示php以fastcgi方式运行,为了方便,只选必须的参数编译
[root@localhost]# cd httpd-2.2.19
[root@localhost]#./configure --enable-so
[root@localhost]#make
[root@localhost]#make install

3、安装mod_fcgid(注意是mod_fcgid,不是mod_fastcgi)
下载并解压缩mod_fcgid,本文测试时用的版本是2.3.6
[root@localhost]wget http://labs.renren.com/apache-mirror//httpd/mod_fcgid/mod_fcgid-2.3.6.tar.gz
[root@localhost]tar xvzf mod_fcgid-2.3.6.tar.gz

编译并安装mod_fcgid
[root@localhost]cd mod_fcgid-2.3.6
[root@localhost]APXS=/usr/local/apache2/bin/apxs ./configure.apxs
[root@localhost]make
[root@localhost]make install

注释:网络上部分文档没有APXS=/usr/local/apache2/bin/apxs,详情参考mod_fcgid软件中的README-FCGID文档

4、安装PHP
下载并加压缩PHP,PHP版本是5.3.6
[root@localhost]wget http://www.php.net/get/php-5.3.6.tar.bz2/from/cn.php.net/mirror
[root@localhost]tar xvjf php-5.3.6.tar.bz2

编译并安装PHP
[root@localhost] cd php-5.3.6
[root@localhost]./configure --prefix=/usr/local --with-configure-file-path=/etc
[root@localhost]make
[root@localhost]make install

 

注释:要是有库文件报错,请安装相关库文件,笔者的系统上曾报libxml2的错,yum install libxml2-devel,解决问题。网络上很多文档,说要使用--enable-fastcgi这个参数,笔者在./configure --help中没有找到这个参数,倒是找到一个--disable-cgi的参数,因而决定不加--enable-fastcgi这个参数,此后证实这个参数可以不加。--with-apxs2这个参数一定不能加。

5.配置

创建FastCGI脚本目录
[root@localhost]# mkdir /usr/local/apache2/fcgi-bin
[root@localhost]# ln -s /usr/local/php/bin/php-cgi /usr/local/apache2/fcgi-bin/php-cgi

编辑apache配置文件
[root@localhost]# vi /usr/local/apache/conf/httpd.conf
加入以下内容
ScriptAlias /fcgi-bin/ "/usr/local/php5/bin/"
AddHandler php-fastcgi .php
Action php-fastcgi /fcgi-bin/php-cgi
AddType application/x-httpd-php .php
<IfModule mod_fcgid.c>
    IdleTimeout 300
    ProcessLifeTime 1800
    MaxProcessCount 100
    DefaultMinClassProcessCount 3
    DefaultMaxClassProcessCount 8
    IPCConnectTimeout 15
    IPCCommTimeout 300
    MaxRequestsPerProcess 100
</IfModule>
<Directory /usr/local/apache2/fcgi-bin>  
      AllowOverride None
      Options FollowSymLinks +ExecCGI
      Order allow,deny
      Allow from all
</Directory>
修改
<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

注释:笔者测试的test.php文件放在htdocs目录下面,因此htdocs目录的权限需要ExecCGI,若目录不同,请赋予目录ExecCGI的权限。另LoadModule fcgid_module modules/mod_fcgid.so 这个再装mod_fcgid的时候,自动添加了。

6、验证

编辑测试页面
[root@localhost]# vi /usr/local/apache2/htdocs/test.php
<?php
echo phpinfo();
?>

IIS7中配置FastCGI运行PHP

环境说明:

操作系统:使用windows 2008 server 64位系统,IIS7.5
PHP版本:官方下载PHP 5.4.16 VC9 x86 Non Thread SafeZIP版本。
PHP路径:C:php-5.4.16

配置步骤:

  1. 解压PHP文件,修改目录名放到C盘。目录地址为C:php-5.4.16
  2. 复制php.ini-production改名为php.ini,先参考PHP.ini参数说明修改。
    并修改PHP对FastCGI支持:
  3. winmail站点打开按下图添加相关的选项:
    选择“处理程序映射”:

    选择“添加模块映射”:

    选择“模块”-“FastCgiModule”和PHP路径 :

    选择“是”:

    按下图所示设置“FastCGI”相关选项:



    上图中“最大实例数”和“实例最大请求数”可以根据自己情况修改。
    “最大实例数”:如果是 Windows Server 2008 R2 操作系统将属性设置为 0,则可以使 IIS 自动选择当前执行环境下 FastCGI 进程的最佳数量。
    “实例最大请求数”:可以根据自己情况修改,也可以修改到10000。
    添加一条变量:PHP_FCGI_MAX_REQUESTS 值是:10000

时间: 2024-09-19 10:12:50

php fastcgi是什么?fastcgi怎么实现的相关文章

nginx FastCGI模块(FastCGI)配置

http://www.howtocn.org/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88:standardhttpmodules:fastcgi#fastcgi%E6%A8%A1%E5%9D%97_fastcgi nginx官方文档:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html   摘

使用fastcgi

很久以前在国外服务器上挖了个坑,说nginx的fastcgi_cache是被大家忽视的一大金矿,今天把这个坑填上,顺祝大家新年快乐. 对于变化不太频繁的数据,大家都比较喜欢存Memcached以减少数据库的读取,但还是会有语言解析运行上的消耗(比如运行PHP,Python等),当然这个时间很短,记得OP上有个同学说P字头的语言,效率都不高,如果能省去,当然最好.(已经用上Squid等的可以忽略本文). 还有一个问题就是很多时候一个页面由多个数据片断组成,为了提高页面速度,要么分别缓存,要么整体缓

apache的fastcgi配置导致的故障

[Tue Jan 10 13:54:30 2012] [alert] [client 192.168.1.200] (13)Permission denied: FastCGI: failed to connect to (dynamic) server "/var/www/extsuite/extmail/cgi/index.cgi": something is seriously wrong, any chance the socket/named_pipe directory w

Windows2003+IIS7 Express使用FastCgi运行php

 想在windows 2003中好好跑php,又要节省内存,真是很为难的事情,考虑到IIS7.5 Express可以在WIN2003上跑,不但能以fastcgi的方式支持php,还自带Rewrite组件,只需简单改改web.config的rule规则就可以了. 于是下载了IIS7.5 Express后,安装,还需要对applicationHost.config进行配置,首先得找到这个文件在哪里,如果能在"我的文档"中IIS7Express目录下找到,那就是它了,否则应该就是在IIS7

PHP 5.3和PHP 5.4出现FastCGI Error解决方法

 这篇文章主要介绍了PHP 5.3和PHP 5.4出现FastCGI Error解决方法,需要的朋友可以参考下     不少童鞋在配置完PHP 5.3或者PHP 5.4网站源码后打开出错,提示   代码如下: FastCGI Error   The FastCGI Handler was unable to process the request. Error Details: Error Number: 14001 (0x800736b1). Error Description: ÓÉÓÚÓ¦

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

概述 写这篇文章的是因为今天要Ubuntu下搭建LNMP环境,Nginx使用的是PHP-FPM,所以对Web服务器与PHP解释器的交互方式做了个整理. 众所周知,PHP是跨平台.跨服务器的语言,这也是它如此流行的原因之一.但是,很少有人知道PHP解释器可以以不同的方式运行在Web服务器中.PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式.但是在Nginx中,Nginx又使用的是PHP-FPM. 这篇文章就对这些概念做个介绍,如有不对的地

php错误提醒FastCGI Error Error Number: -2147467259 (0x80004005)错误原因及解决方法

本文转自IT摆渡网欢迎转载,请标明出处 更多php文章请阅读 php问题解决 我的PHP是IIS模式的,今天出现这种错误提示:FastCGI Error The FastCGI Handler was unable to process the request. //FastCGI无法处理请求,出现这种错误多见于在IIS中以FastCGI模式运行PHP的情况,原因是php.ini配置的问题,费话不多说,这里直接给出解决方法,不浪费时间. 1.打开php.ini找到register_globals

Nginx + CGI/FastCGI + C/Cpp

接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标准输入 2.     FastCGI 3. nginx cgi/fastcgi 3.1. nginx + fastcgi 3.1.1. spawn-fcgi 3.1.2. 编写fastcgi应用程序 3.1.3. nginx fastcgi

深入理解 FastCGI 协议以及在 PHP 中的实现

在讨论 FastCGI 之前,不得不说传统的 CGI 的工作原理,同时应该大概了解 CGI 1.1 协议 传统 CGI 工作原理分析 客户端访问某个 URL 地址之后,通过 GET/POST/PUT 等方式提交数据,并通过 HTTP 协议向 Web 服务器发出请求,服务器端的 HTTP Daemon(守护进程)将 HTTP 请求里描述的信息通过标准输入 stdin 和环境变量(environment variable)传递给主页指定的 CGI 程序,并启动此应用程序进行处理(包括对数据库的处理)