2、Apache运行机制剖析
l
B/S交互过程
浏览器和服务器一次交互的过程如图:
一、
浏览器(Browser)向服务器(Web Server)发出HTTP请求(Request)。
二、
服务器(Web Server)分析浏览器的请求,输出响应数据(Response)。
三、
浏览器(Browser)收到响应数据后进行解析,最后显示在浏览器中。
下面是一份浏览器的请求数据和服务器的响应数据:
以上内容很是简单,我想Web开发人员都很清楚这个过程,在此再也不赘述。
l
Apache概述
Apache是目前世界上使用最为普遍的一种Web Server,它以跨平台、高效、稳定而闻名,按照官方统计的数据,Apache服务器的装机量大约占据该市场60%以上的份额,尤为是在X(Unix/Linux)平台上最为广泛。另外的一些Web Server产品,好比IIS只能运行在Windows平台上,大多结合微软的.Net技术机构一块儿使用。Apache最为诟病的一点是愈来愈重,被认为是重量级的WebServer,因此后来又出现了不少轻量级的替代产品,好比lighttpd,nginx,它们的共同特色就是效率显著提升,但又每每只用于某些特定场合。
l
Apache组件逻辑图
Apache是基于模块化设计的,核心代码其实并很少。你若是想要阅读Apache的源代码,建议你直接从core.c文件读起,主要的处理逻辑都包含在里面。Apache大多数的功能都被分散到各个模块中,系统启动的时候按需载入。MPM(Multi -Processing Modules,多重处理模块)是Apache的核心组件,Apache经过MPM使用操做系统的资源,管理进程/线程池。另外,Apache为了可以得到最好的运行性能,他针对不一样的平台(Unix/Linux、Window)作了优化,提供不一样的MPM,其中最为常见的有prefork和worker两种。您的服务器跑的是哪一种方式,取决于安装Apache过程当中指定的编译参数。在X系统上默认编译为prefork模式。因为大多数的Unix都不支持真正的多线程,因此采用预派生子进程(prefork)方式,worker是一种基于多进程多线程混合的模式。对此感兴趣的同窗能够阅读有关资料,此处再也不多讲。
Apache的逻辑构成以及与操做系统的关系
APR(Apache portable Runtime Library),即Apache可移植运行库,是一个抽象库用来实现Apache内部组件对操做系统的使用。Apache对于php的解析,就是经过图中所标的php Module完成的。
l
Apache的生命周期
这一节的内容会与php模块的载入有关,您能够略微关注一下。如下图形用来讲明Apache的生命周期(prefork模式)。