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模式)。