php在apache运行的几种方式

本文讲运行的三种模式 CGI模式、FastCGI模式、Apache 模块DLL

解释 cgi,fastcgi,php-fmp之间的关系 请看 https://blog.csdn.net/qq_21956483/article/details/80348316

Cgi模式和模块dll加载方式比较:

Cgi模式下

apache调用外部执行器php.exe执行php代码,并将解释后生成的html代码和原html整合,再传递给apache服务器。

其在执行时每次都需要重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构,运行速度非常慢,但因为是外部加载执行器,

php代码执行出错不会导致apache崩溃。

在模块化(DLL)中

PHP是与Web服务器一起启动并运行的。所以从某种角度上来说,以apache模块方式安装的 PHP4有着比CGI模式更好的安全性以及更好的执行效率和速度。

Cgi和fastcgi模式比较:

Fastcig是cgi的升级版,Cgi和fastcgi工作模式大抵相同,但fastcgi模式中fastcgi的进程管理器可用来管理cgi解释器,

该管理器在cgi解释器完成请求后,会处于挂起状态,用以等待接下来的请求,

因为向比较cgi每次都需要重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构,fastcig模式明显要快很多。

三种模式在apache中使用的方式如下:

一、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"

PHP5 版写法

ScriptAlias /php/ "D:/php/"

AddType application/x-httpd-php .php

Action application/x-httpd-php "/php/php-cgi.exe"

二、Apache模块模式

PHP 在 Apache 2中的 模块模式。编辑Apache 配置文件httpd.conf 如下:

PHP4 版写法

LoadModule php4_module "D:/php/php4apache2.dll"

AddType application/x-httpd-php .php

别忘了从 sapi 目录中把php4apache2.dll 拷贝出来!

PHP5 版写法

LoadModule php5_module "D:/php/php5apache2.dll"

AddType application/x-httpd-php .php

PHPIniDir "D:/php"

PHPIniDir 是用来指明php配置文件php.ini 的路径

三、FastCGI模式

Apache下的FastCGI模块目前网上有两个版本 mod_fastcgi 和 mod_fcgid。 推荐用 mod_fcgid。

使用 mod_fcgid 配置fastCGI模式

下载的 mod_fcgid,将压缩包中的"mod_fcgid.so"文件复制到apache的"modules"目录。打开Apache的httpd.conf 文件,在最后加入如下配置:

html 复制代码
LoadModule fcgid_module modules/mod_fcgid.so

<IfModule mod_fcgid.c>

AddHandler fcgid-script .fcgi .php

#php.ini的存放目录

FcgidInitialEnv PHPRC"D:/PHP"

# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出

FcgidInitialEnvPHP_FCGI_MAX_REQUESTS 1000

#php-cgi每个进程的最大请求数

FcgidMaxRequestsPerProcess1000

#php-cgi最大的进程数

FcgidMaxProcesses 5

#最大执行时间

FcgidIOTimeout 120

FcgidIdleTimeout 120

#php-cgi的路径

FcgidWrapper "D:/PHP/php-cgi.exe" .php

AddType application/x-httpd-php .php

</IfModule>
html 复制代码

mod_proxy 代理模块

html 复制代码
mod_proxy 代理模块

详细见 http://tcspecial.iteye.com/blog/2070075

mod_fastcgi 模块在windows上表现差强人意,极不稳定, 何况很久没维护更新了, 不适合用在生产环境. 在 apache 2.4 版本提供了 mod_proxy 代理模块, 可以将远端服务器映射到本地 URL 空间中,完全可以替换 mod_fastcgi

下载 apache2.4 或以上版本, 安装后会发现 modules 目录有很多代理模块 mod_proxy_ftp , mod_proxy_fcgi , mod_proxy_http 等, 实现了多种协议

  1. #启用 fastcgi,http 协议:
  2. LoadModule proxy_module modules/mod_proxy.so
  3. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  4. LoadModule proxy_http_module modules/mod_proxy_http.so
  5. #添加代理服务:
  6. ProxyPass /baidu http://www.baidu.com
  7. ProxyPass /fcgi/ fcgi://192.168.1.82:9000/
相关推荐
I_Am_Me_3 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
重生之我是数学王子13 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Ai 编码助手15 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z19 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹26 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE28 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
zwjapple44 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five1 小时前
TypeScript项目中Axios的封装
开发语言·前端·javascript
前端每日三省1 小时前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang