php在apache中运行模式

(2011-12-18 02:38:27)

标签:

杂谈

分类: 服务器及软件

一、phpphp在三种工作方式:Apache 模块DLL)

以下分别比较:

1. php在CGI模式、PHP 在 中的 # 对 PHP 4 用这行
Action application/x-httpd-php "/php/php.exe"

#
对 PHP 5
用这行
Action application/x-httpd-php "/php/php-Apache 2.0

apache2.dll"
#
别忘了从 sapi
目录中把 php4apache2.dll"
AddType application/x-httpd-php .php

#
配置 php.ini
的路径
PHPIniDir "C:/php"

这两种工作方式的区别:
apache模块方式安装的
PHP4有着比2. FastCGI运行模式分析:

FastCGI的工作原理是:

(1)、Web Server
启动时载入FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGI Process
Manager)】(IIS ISAPI或Apache
Module);
(2)、FastCGI进程管理器自身初始化,启动多个cgi.exe)并等待来自Web Server的连接。
(3)、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI环境变量和标准输入发送到FastCGI子进程php-CGI模式中,php-
在上述情况中,你可以想象  

3.
为什么要使用
FastCGI,而不是多线程CGI解释器,无论是IIS ISAPI方式还是CGI解释器,但是,你有可能发现网页有时候会出现错误,无论如何也找不到原因,而换用FastCGI方式

时这种错误的概率会大大的降低。我也不清楚这是为什么,我想独立地址空间的CGI解释器更快?但有时候确实是这样,只有测试一下你的网站,才能最后下结论。原因嘛,我觉得

很难讲,但有资料说在Zend WinEnabler的时代,Zend原来也是建议在Windows平台下使用FastCGI而不是IIS ISAPI或 

4. FastCGI
模式运行
PHP
的优点:

以 FastCGI
模式运行 PHP
有几个主要的好处。首先就是 PHP
出错的时候不会搞垮
最后,就是可以同时运行 PHP5
和 PHP4。参考下面的配置文件,分别建立了两个虚拟主机,其中一个使用
PHP5,另一个使用
PHP4。

LoadModule fastcgi_module
modules/mod_fastcgi-2.4.2-AP13.dll

ScriptAlias /fcgi-php5/
"d:/usr/local/php-5.0.4/"

FastCgiServer "d:/usr/local/php-5.0.4/php-ScriptAlias /fcgi-php4/
"d:/usr/local/php-4.3.11/"

FastCgiServer
"d:/usr/local/php-4.3.11/php.exe"

Listen 80

NameVirtualHost *:80

DocumentRoot d:/www

Options Indexes FollowSymlinks MultiViews

ServerName php5.localhost

AddType application/x-httpd-fastphp5 .php

Action application/x-httpd-fastphp5
"/fcgi-php5/php- 

IndexOptions FancyIndexing FoldersFirst

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

Listen 8080

NameVirtualHost *:8080

DocumentRoot d:/www

Options Indexes FollowSymlinks MultiViews

ServerName php4.localhost

AddType application/x-httpd-fastphp4 .php

Action application/x-httpd-fastphp4
"/fcgi-php4/php.exe"

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

使用上面的配置,访问 http://localhost/
就使用 PHP5,而访问
http://localhost:8080/
就使用 PHP4。所以只要合理配置,就可以让不同的虚拟主机使用不同版本的
PHP。

FastCGI
模式的一些缺点:

说完了好处,也来说说缺点。从我的实际使用来看,用 FastCGI
模式更适合生产环境的服务器。但对于开发用机器来说就不太合适。因为当使用 Zend Studio
调试程序时,由于 FastCGI
会认为 PHP
进程超时,从而在页面返回 500
错误。这一点让人非常恼火,所以我在开发机器上还是换回了 ISAPI
模式。

最后,在 Windows
中以 FastCGI
模式存在潜在的安


php
nginx
中运行模式
(nginx+PHP-FPM )目前理想选择

使用FastCGI方式现在常见的有两种stack:ligthttpd+spawn-fcgi;
另外一种是nginx+PHP-FPM(也可以用spawn-fcgi)

(1)
如上面所说该两种结构都采用FastCGI对PHP支持,因此HTTPServer完全解放出来,可以更好地进行响应和并发处理。因此lighttpd和nginx都有small, but powerful和efficient的美誉。

(2)
该两者还可以分出一个好坏来,spawn-fcgi由于是lighttpd的一部分,因此安装了lighttpd一般就会使用spawn-fcgi对php支持,但是目前有用户说ligttpd的spwan-fcgi在高并发访问的时候,会出现上面说的内存泄漏甚至自动重启fastcgi。即:PHP脚本处理器当机,这个时候如果用户访问的话,可能就会出现白页(即PHP不能被解析或者出错)。

另一个:首先nginx不像lighttpd本身含带了fastcgi(spawn-fcgi),因此它完全是轻量级的,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此其实这样看来nginx是非常灵活的,它可以和任何第三方提供解析的处理器实现连接从而实现对PHP的解析(在nginx.conf中很容易设置)。

nginx可以使用spwan-fcgi(需要一同安装lighttpd,但是需要为nginx避开端口,一些较早的blog有这方面安装的教程),但是由于spawn-fcgi具有上面所述的用户逐渐发现的缺陷,现在慢慢减少使用nginx+spawn-fcgi组合了。

c.
由于spawn-fcgi的缺陷,现在出现了新的第三方(目前还是,听说正在努力不久将来加入到PHP core中)的PHP的FastCGI处理器,叫做PHP-FPM(具体可以google)。它和spawn-fcgi比较起来有如下优点:

由于它是作为PHP的patch补丁来开发的,安装的时候需要和php源码一起编译,也就是说编译到php core中了,因此在性能方面要优秀一些;

同时它在处理高并发方面也优于spawn-fcgi,至少不会自动重启fastcgi处理器。具体采用的算法和设计可以google了解。

因此,如上所说由于nginx的轻量和灵活性,因此目前性能优越,越来越多人逐渐使用这个组合:nginx+PHP/PHP-FPM


三、
总结:

目前在HTTPServer这块基本可以看到有三种stack比较流行:

(1)Apache由于有丰富的模块和功能,目前来说仍旧是老大。有人测试nginx+PHP-FPM在高并发情况下可能会达到Apache+mod_php5的5~10倍,现在nginx+PHP-FPM使用的人越来越多。

php在apache中运行模式的更多相关文章

  1. Ubuntu下在Apache中运行Keystone

    最近一次从Github上更新Keystone的代码后,发现原来bin/keystone-all和bin/keystone-manage都不见了,取而代之的是keystone/cmd/目录下的all.p ...

  2. ARM处理器的寄存器,ARM与Thumb状态,7中运行模式

     ** ARM处理器的寄存器,ARM与Thumb状态,7中运行模式  分类: 嵌入式 ARM处理器工作模式一共有 7 种 : USR  模式    正常用户模式,程序正常执行模式 FIQ模式(Fast ...

  3. ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 【转】

    转自:http://blog.chinaunix.net/uid-28458801-id-3494646.html ARM处理器工作模式一共有 7 种 : USR  模式    正常用户模式,程序正常 ...

  4. 在Apache中运行Python WSGI应用

    我们介绍如何使用Apache模块mod_wsgi来运行Python WSGI应用. 安装mod_wsgi 我们假设你已经有了Apache和Python环境,在Linux或者Mac上,那第一步自然是安装 ...

  5. 如何在Apache中运行Python脚本

    第一步:进入C:\Apache24\cgi-bin: 第二步:在cgi-bin目录下新建一个hello.py文件: 第三步: #!python #coding:utf-8 print("co ...

  6. [转]php 在各种web服务器的运行模式

    一.php在apache中运行模式 php在apache中一共有三种工作方式:CGI模式.FastCGI模式.Apache 模块DLL) 以下分别比较: 1. CGI模式与模块模式比较: php在ap ...

  7. php运行模式的比较(转)

    PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行   ( ...

  8. 【转载】PHP运行模式的深入理解

    PHP运行模式的深入理解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-03我要评论 本篇文章是对PHP运行模式进行了详细的分析介绍,需要的朋友参考下   PHP运行模式有4钟:1) ...

  9. PHP运行模式的深入理解

    PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行   ( ...

随机推荐

  1. java中JSON串转换并获取数据

    String strAllImp= " [{"id":2,"name":"还不错","count":3}]&q ...

  2. hadoop笔记之Hive入门(什么是Hive)

    Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...

  3. function(ev) //括号里的ev是什么东西,什么意思?

    事件对象: 楼上的不要误导新人 ev是我们获取事件详细信息的event是IE的写法 大多数人是写window.event 其实区别也差不多 好像window.event更安全些 我也不记得了 火狐呢 ...

  4. Prepare Python environment and install selenium.

    1, Install python and selenium. I use python 3.5, the following is the example 1.)    Python downloa ...

  5. iOS 4.2 SDK安装

    iOS 4.2 SDK安装 ◆系统版本:10.6.5 ◆硬件配置: ◆10G空间,3.5G内存,显卡:GMA950 Xcode 3.2.5和iOS 4.2 SDK下载:http://developer ...

  6. HDU 5723 Abandoned country(最小生成树 + 树形DP)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5723 [题目大意] n座城市,m条路径,求解: 1.最短的路径和,使得n座城市之间直接或者间接连通 ...

  7. Http静态资源的缓存

    最近一段时间一直在研究页面缓存和压缩方面的东西,由于公司服务器使用的是iis6.0,很多性能方面的优化都不支持.所以,就开始尝试着自己写个简单的处理程序. 为了减少服务器带宽的需求,我们要减少客户端与 ...

  8. 解析配置文件ConfigParser模块

    一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value 的配置 ...

  9. MySQL 5.7.10 免安装配置

    # 配置环境:windows 64bit # 安装版本:mysql-5.7.10-win32(zip archive版本) 1. ZIP Archive版是免安装的,只需把mysql-5.7.10-w ...

  10. Pie(求最小身高差,dp)

    Pie Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...