zoukankan      html  css  js  c++  java
  • php在apache中运行模式

    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使用的人越来越多。

  • 相关阅读:
    Linux常用命令
    Linux常用命令
    Linux常用命令
    Linux 三剑客
    Python思维导图(二)—— 数据类型
    Python思维导图(一)—— 基础
    testNg
    Linux安装Git
    本地Git绑定Github仓库
    TCP协议与UDP协议
  • 原文地址:https://www.cnblogs.com/aipiaoborensheng/p/5002265.html
Copyright © 2011-2022 走看看