• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >Apache > php底层深度探索(4) ---Apache运行阶段分析

php底层深度探索(4) ---Apache运行阶段分析

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含php底层,php底层架构,php底层开发语言,apache php,apache php mysql等服务器相关知识,网友希望可以进行参考

2、运行阶段

     2.1 运行阶段概述

    在运行阶段,Apache主要工作是处理用户的服务请求。

    在这个阶段,Apache放弃特权用户级别,使用普通权限,这主要是基于安全性的考虑,防止由于代码的缺陷引起的安全漏洞。象微软的IIS就曾遭受“红色代码(Code Red)”和“尼姆达(Nimda)”等恶意代码的溢出攻击。

 

 2.2 运行阶段流程
    Apache将请求处理循环分为11个阶段,依次是:Post-Read-Request,URI Translation,Header Parsing,Access Control,Authentication,Authorization,MIME Type Checking,FixUp,Response,Logging,CleanUp。

 

 

     Apache Hook机制

     Apache 的Hook机制是指:Apache 允许模块(包括内部模块和外部模块,例如mod_php5.so,mod_perl.so等)将自定义的函数注入到请求处理循环中。换句话说,模块可以在 Apache的任何一个处理阶段中挂接(Hook)上自己的处理函数,从而参与Apache的请求处理过程。


    mod_php5.so/ php5apache2.dll就是将所包含的自定义函数,通过Hook机制注入到Apache中,在Apache处理流程的各个阶段负责处理php请求。


    关于Hook机制在Windows系统开发也经常遇到,在Windows开发既有系统级的钩子,又有应用级的钩子。常见的翻译软件(例如金山词霸等等)的 屏幕取词功能,大多数是通过安装系统级钩子函数完成的,将自定义函数替换gdi32.dll中的屏幕输出的绘制函数。

 

    Apache请求处理循环详解
    Apache请求处理循环的11个阶段都做了哪些事情呢?
   

    1、Post-Read-Request阶段

    在正常请求处理流程中,这是模块可以插入钩子的第一个阶段。对于那些想很早进入处理请求的模块来说,这个阶段可以被利用。

    2、URI Translation阶段
    Apache在本阶段的主要工作:将请求的URL映射到本地文件系统。模块可以在这阶段插入钩子,执行自己的映射逻辑。mod_alias就是利用这个阶段工作的。

    3、Header Parsing阶段
    Apache在本阶段的主要工作:检查请求的头部。由于模块可以在请求处理流程的任何一个点上执行检查请求头部的任务,因此这个钩子很少被使用。mod_setenvif就是利用这个阶段工作的。

 

    4、Access Control阶段
    Apache在本阶段的主要工作:根据配置文件检查是否允许访问请求的资源。Apache的标准逻辑实现了允许和拒绝指令。mod_authz_host就是利用这个阶段工作的。

    5、Authentication阶段
     Apache在本阶段的主要工作:按照配置文件设定的策略对用户进行认证,并设定用户名区域。模块可以在这阶段插入钩子,实现一个认证方法。

 

    6、Authorization阶段
    Apache在本阶段的主要工作:根据配置文件检查是否允许认证过的用户执行请求的操作。模块可以在这阶段插入钩子,实现一个用户权限管理的方法。

    7、MIME Type Checking阶段
    Apache在本阶段的主要工作:根据请求资源的MIME类型的相关规则,判定将要使用的内容处理函数。标准模块mod_negotiation和mod_mime实现了这个钩子。

    8、FixUp阶段
    这是一个通用的阶段,允许模块在内容生成器之前,运行任何必要的处理流程。和Post_Read_Request类似,这是一个能够捕获任何信息的钩子,也是最常使用的钩子。

    9、Response阶段
    Apache在本阶段的主要工作:生成返回客户端的内容,负责给客户端发送一个恰当的回复。这个阶段是整个处理流程的核心部分。

    10、Logging阶段
    Apache在本阶段的主要工作:在回复已经发送给客户端之后记录事务。模块可能修改或者替换Apache的标准日志记录。

 

    11、CleanUp阶段
    Apache在本阶段的主要工作:清理本次请求事务处理完成之后遗留的环境,比如文件、目录的处理或者Socket的关闭等等,这是Apache一次请求处理的最后一个阶段。

 

    模块的注入Apache的过程可以参考源码中server/core.c文件:
 

    mod_php5.so/ php5apache2.dll注入到Apache的函数中,最重要的就是Response阶段的处理函数。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP底层深度探索(2)---Apache运行机制剖析
  • php底层深度探索(3) ---Apache启动阶段分析
  • php底层深度探索(4) ---Apache运行阶段分析

相关文章

  • Apache配置为weblogic的前端服务器
  • Apache、resin、rewrit泛域名、多域名设置
  • Apache Lucene 2.9.0 发布
  • Mozilla 复查其开源协议或与Apache 协议兼容
  • Apache Tomcat 5.5.28发布
  • Apache集群功能
  • Apache OpenOffice 4.1.0 正式版发布
  • 关于Apache的性能优化
  • Apache HTTP Server 中发现严重安全漏洞
  • Apache中禁止以目录方式访问的设

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Apache基金会迎来10周年生日
    • php底层深度探索(4) ---Apache运行阶段分析
    • 第9期:APACHE基础篇
    • Apache OpenOffice 4.1.0 正式版发布
    • 开源版本控制工具Subversion并入Apache软件基金会
    • Apache HTTP Server 中发现严重安全漏洞
    • Subversion成为Apache顶级项目
    • 让使用Apache的网站速度更快
    • Apache Solr 1.4 发布
    • Apache十岁:钱非万能 无私贡献促发展

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有