二、Apache運行機制剖析
l B/S互動過程
瀏覽器和伺服器一次互動的過程
1、 瀏覽器(Browser)向伺服器(Web Server)發出HTTP請求(Request)。
2、 伺服器(Web Server)分析瀏覽器的請求,輸出響應資料(Response)。
3、 瀏覽器(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模式)