网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 编程文档 > PHP > 正文

php底层深度探索(3)---Apache启动阶段分析

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  这一篇多写一点内容,主要是今天终于有时间了。最近工作一直比较忙,公司里一大摊子事情需要处理,哥们首先得卖身混饭吃,其次才能在闲得蛋疼的时候写一点。闲话少叙,书接上回:

  l     Apache的生命周期

  这一节的内容将会阐述PHP模块的载入过程,请参考Apache的生命周期示意图(prefork模式下)。

php底层深度探索(3) ---Apache启动阶段分析

  Apache的运行分为启动阶段和运行阶段。

  1.     启动阶段

  在启动阶段,Apache主要进行配置文件解析(例如http.conf以及Include指令设定的配置文件等)、模块加载(例如mod_php.so,mod_Perl.so等)和系统资源初始化(例如日志文件、共享内存段等)工作。

  在这个阶段,Apache为了获得系统资源最大的使用权限,将以特权用户root(X系统)或超级管理员administrator(Windows系统)完成启动。

  Apache和“php处理机”的装配过程就是在这个阶段完成的。

  “php处理机”就是负责解释和执行你的php代码的系统模块。这个名字是我特意创造的,目的是为了帮助你理解本节的内容,后面的章节还会给出更专业的名称。

  你单独做过php的安装配置吗?

  如果你做过类似的工作,下面的内容很容易理解;如果你没有做过,可以尝试安装一下,有助于加深你的理解。不过,我的文章向来深入浅出,我会尽量把这个过程讲得更浅显一些。其实php的安装非常简单,如果你很感兴趣的话,可以到网上随便搜一篇安装指南,按步骤照做就可以了。

  把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置。这里,我们就以php的mod_php5 SAPI运行模式为例进行讲解,至于SAPI这个概念后面我们还会详细讲解。

  假定我们安装的版本是Apache2 和 Php5,那么需要编辑Apache的主配置文件http.conf,在其中加入下面的几行内容:

  Unix/Linux环境下:

  LoadModule php5_module modules/mod_php5.so

  AddType application/x-httpd-php .php

  注:其中modules/mod_php5.so 是X系统环境下mod_php5.so文件的安装位置。

  Windows环境下:

  LoadModule php5_module d:/php/php5apache2.dll

  AddType application/x-httpd-php .php

  注:其中d:/php/php5apache2.dll 是在Windows环境下php5apache2.dll文件的安装位置。

  这两项配置就是告诉Apache Server,以后收到的Url用户请求,凡是以php作为后缀,就需要调用php5_module模块(mod_php5.so/ php5apache2.dll)进行处理。

  这个过程可以参考以下的示意图:

php底层深度探索(3) ---Apache启动阶段分析

  Apache启动阶段的源码包含在server/main.c中,我整理了一下源码中的对应关系:

php底层深度探索(3) ---Apache启动阶段分析

  不熟悉unix/linux的同学可能会问so文件(mod_php5.so)是个什么样的文件?

  unix/linux下,so后缀文件是一个DSO文件,DSO与windows系统下的dll是等价概念,都是把一堆函数封装在一个二进制文件中。调用它们的进程把它们装入内存后,会将其映射到自己的地址空间。

  DSO全称为Dynamic Shared Object,即动态共享对象。DLL全称为Dynamic Link Library 即动态链接库。

  Apache 服务器的体系结构的最大特点,就是高度模块化。如果你为了追求处理效率,可以把这些dso模块在apache编译的时候静态链入,这样会提高Apache 5%左右的处理性能。

  2.     运行阶段

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

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

  系列文章:

  php底层深度探索(1)---开篇

  Php底层深度探索 (2)---Apache运行机制剖析

  php底层深度探索 (3) ---Apache启动阶段分析

(责任编辑:admin)

  • 下一篇资讯: PHP+AJAX教程(9):AJAX投票
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师