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

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

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

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

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

 

l         Apache的生命周期

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

 

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)进行处理。

 

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

 

 

 

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

 

 

 

 

不熟悉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)”等恶意代码的溢出攻击。

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

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

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

相关文章

  • Apache Hadoop 2.3.0 发布
  • 关于Apache的性能优化
  • Apache Lucene 2.9.0 发布
  • Apache 2.2.14发布,修正了三个漏洞
  • Apache Tomcat Connectors 1.2.30 发布
  • Apache Solr 1.4 发布
  • 让使用Apache的网站速度更快
  • Subversion成为Apache顶级项目
  • 开源Web服务器Apache,15岁生日快乐!
  • Apache日志分析,Petit 1.0.0 发布

文章分类

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

最近更新的内容

    • Apache2.2版本的编译安装
    • Apache小窍门技巧5则
    • Apache中禁止以目录方式访问的设
    • 5月Web服务器调查结果出炉Apache居榜首
    • 关于Apache的性能优化
    • Apache 2.2.14发布,修正了三个漏洞
    • Apache Lucene 2.9.0 发布
    • Apache日志分析,Petit 1.0.0 发布
    • Apache 发布 ZooKeeper 3.2.1
    • Apache、resin、rewrit泛域名、多域名设置

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

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