PHP在Apache中两种工作方式的区别.docx

PHP在Apache中两种工作方式的区别.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP 在 Apache 中两种工作方式的区别(CGI 模式、Apache 模块 DLL) Windows 下有两种方法使 PHP 工作于 Apache 2.0.x 之中。一种是 使用 CGI 可执行程序,另一种是适用 Apache 模块的 DLL。这两种工作方式的安装: PHP 在 Apache 2.0 中的 CGI 方式 ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php # 对 PHP 4 用这行 Action application/x-httpd-php "/php/php.exe" # 对 PHP 5 用这行 Action application/x-httpd-php "/php/php-cgi.exe" PHP 在 Apache 2.0 中的模块方式# 对 PHP 4 用这两行: LoadModule php4_module "c:/php/php4apache2.dll" # 别忘了从 sapi 目录中把 php4apache2.dll 拷贝出来! AddType application/x-httpd-php .php # 对 PHP 5 用这两行: LoadModule php5_module "c:/php/php5apache2.dll" AddType application/x-httpd-php .php # 配置 php.ini 的路径 PHPIniDir "C:/php" 这两种工作方式的区别: 在 CGI 模式下,如果客户机请求一个 php 文件,Web 服务器就调用php.exe 去解释这个文件,然后再把解释的结果以网页的形式返回给客户机; 而在模块化(DLL)中,PHP 是与Web 服务器一起启动并运行的。 所以从某种角度上来说,以 apache 模块方式安装的 PHP4 有着比 CGI 模式更好的安全性以及更好的执行效率和速度。一、FastCGI 是什么? FastCGI 是语言无关的、可伸缩架构的 CGI 开放扩展,其主要行为是将 CGI 解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI 解释器的反复加载是 CGI 性能低下的主要原因,如果 CGI 解释器保持在内存中并接受 FastCGI 进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over 特性等等。 FastCGI 的官方站点在 FastCGI 的工作原理是: 1、Web Server 启动时载入FastCGI 进程管理器(IIS ISAPI 或 Apache Module); 2、FastCGI 进程管理器自身初始化,启动多个 CGI 解释器进程 (在任务管理器中可见多个 php-cgi.exe)并等待来自 Web Server 的连接。 3、当客户端请求到达Web Server 时,FastCGI 进程管理器选择并连接到一个CGI 解释器。Web server 将 CGI 环境变量和标准输入发送到 FastCGI 子进程php-cgi.exe。 4、FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当 FastCGI 子进程关闭连接时,请求便告处理完成。FastCGI 子进程接着等待并处理来自 FastCGI 进程管理器(运行在 WebServer 中)的下一个连接。在正常的 CGI 模式中,php-cgi.exe在此便退出了。 在上述情况中,你可以想象 CGI 通常有多慢。每一个 Web 请求 PHP 都必须重新解析php.ini、重新载入全部 dll 扩展并重初始化全部 数据结构。使用 FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection) 可以工作。 二、为什么要使用 FastCGI,而不是多线程CGI 解释器? 这可能出于多方面的考虑,例如: 1、你无论如何也不能在 windows 平台上稳定的使用多线程CGI 解释器,无论是 IIS ISAPI 方式还是 APACHE Module 方式,它们总是运行一段时间就崩溃了。奇怪么?但是确实存在这样的情况! 当然,也有很多时候你能够稳定的使用多线程CGI 解释器,但是,你有可能发现网页有时候会出现错误,无论如何也找不到原因,而换用 FastCGI 方式时这种错误的概率会大大的降低。我也不清楚这是为什么,我想独立地址空间的 CGI 解释器可能终究比共享地址空间的形式来得稳定一点点。 2、性能!性能?可能么,难道 FastCGI 比多线程 CGI 解释器更快?但有时候确实是这样,只有测试一下你的网站,才能最后下结论。原因嘛,我觉得很难讲,但有

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档