国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

PHP內核探索 —— Apache運行與鉤子函數

瀏覽:23日期:2022-09-16 11:47:24

Apache是目前世界上使用最為廣泛的一種Web Server,它以跨平臺、高效和穩定而聞名。按照去年官方統計的數據,Apache服務器的裝機量占該市場60%以上的份額。尤其是在X(Unix/Linux)平臺上,Apache是最常見的選擇。其它的Web Server產品,比如IIS,只能運行在Windows平臺上,是基于微軟.Net架構技術的不二選擇。

Apache并不是沒有缺點,它最為詬病的一點就是變得越來越重,被普遍認為是重量級的WebServer。所以,近年來又涌現出了很多輕量級的替代產品,比如lighttpd,nginx等等,這些WebServer的優點是運行效率很高,但缺點也很明顯,成熟度往往要低于Apache,通常只能用于某些特定場合。

Apache的運行過程

Apache的運行分為啟動階段和運行階段。 在啟動階段,Apache為了獲得系統資源最大的使用權限,將以特權用戶root(*nix系統)或超級管理員Administrator(Windows系統)完成啟動, 并且整個過程處于一個單進程單線程的環境中。 這個階段包括配置文件解析(如http.conf文件)、模塊加載(如mod_php,mod_perl)和系統資源初始化(例如日志文件、共享內存段、數據庫連接等)等工作。

Apache的啟動階段執行了大量的初始化操作,并且將許多比較慢或者花費比較高的操作都集中在這個階段完成,以減少了后面處理請求服務的壓力。

在運行階段,Apache主要工作是處理用戶的服務請求。 在這個階段,Apache放棄特權用戶級別,使用普通權限,這主要是基于安全性的考慮,防止由于代碼的缺陷引起的安全漏洞。 Apache對HTTP的請求可以分為連接、處理和斷開連接三個大的階段。同時也可以分為11個小的階段,依次為: Post-Read-Request,URI Translation,Header Parsing,Access Control,Authentication,Authorization, MIME Type Checking,FixUp,Response,Logging,CleanUp

Apache Hook機制

Apache的Hook機制是指:Apache 允許模塊(包括內部模塊和外部模塊,例如mod_php5.so,mod_perl.so等)將自定義的函數注入到請求處理循環中。換句話說,模塊可以在Apache的任何一個處理階段中掛接(Hook)上自己的處理函數,從而參與Apache的請求處理過程。

mod_php5.so/ php5apache2.dll就是將所包含的自定義函數,通過Hook機制注入到Apache中,在Apache處理流程的各個階段負責處理php請求。

關于Hook機制在Windows系統開發也經常遇到,在Windows開發既有系統級的鉤子,又有應用級的鉤子。常見的翻譯軟件(例如金山詞霸等等)的屏幕取詞功能,大多數是通過安裝系統級鉤子函數完成的,將自定義函數替換gdi32.dll中的屏幕輸出的繪制函數。

Apache 服務器的體系結構的最大特點,就是高度模塊化。如果你為了追求處理效率,可以把這些dso模塊在apache編譯的時候靜態鏈入,這樣會提高Apache 5%左右的處理性能。

Apache請求處理循環

Apache請求處理循環的11個階段都做了哪些事情呢?

Post-Read-Request階段。在正常請求處理流程中,這是模塊可以插入鉤子的第一個階段。對于那些想很早進入處理請求的模塊來說,這個階段可以被利用。URI Translation階段。Apache在本階段的主要工作:將請求的URL映射到本地文件系統。模塊可以在這階段插入鉤子,執行自己的映射邏輯。mod_alias就是利用這個階段工作的。Header Parsing階段。Apache在本階段的主要工作:檢查請求的頭部。由于模塊可以在請求處理流程的任何一個點上執行檢查請求頭部的任務,因此這個鉤子很少被使用。mod_setenvif就是利用這個階段工作的。Access Control階段。?Apache在本階段的主要工作:根據配置文件檢查是否允許訪問請求的資源。Apache的標準邏輯實現了允許和拒絕指令。mod_authz_host就是利用這個階段工作的。Authentication階段。Apache在本階段的主要工作:按照配置文件設定的策略對用戶進行認證,并設定用戶名區域。模塊可以在這階段插入鉤子,實現一個認證方法。Authorization階段。?Apache在本階段的主要工作:根據配置文件檢查是否允許認證過的用戶執行請求的操作。模塊可以在這階段插入鉤子,實現一個用戶權限管理的方法。MIME Type Checking階段。Apache在本階段的主要工作:根據請求資源的MIME類型的相關規則,判定將要使用的內容處理函數。標準模塊mod_negotiation和mod_mime實現了這個鉤子。FixUp階段。這是一個通用的階段,允許模塊在內容生成器之前,運行任何必要的處理流程。和Post_Read_Request類似,這是一個能夠捕獲任何信息的鉤子,也是最常使用的鉤子。Response階段。Apache在本階段的主要工作:生成返回客戶端的內容,負責給客戶端發送一個恰當的回復。這個階段是整個處理流程的核心部分。Logging階段。Apache在本階段的主要工作:在回復已經發送給客戶端之后記錄事務。模塊可能修改或者替換Apache的標準日志記錄。CleanUp階段。?Apache在本階段的主要工作:清理本次請求事務處理完成之后遺留的環境,比如文件、目錄的處理或者Socket的關閉等等,這是Apache一次請求處理的最后一個階段。
標簽: PHP
相關文章:
主站蜘蛛池模板: japanesetubesexfree| 国产高中生粉嫩无套第一次 | 亚洲第一免费网站 | 一区二区三区在线 | 万全影院亚洲影院理论片 | 亚洲国产精品久久人人爱 | 欧美成人高清性色生活 | 国产男女乱淫真视频全程播放 | 国产二区三区毛片 | 成人毛片免费观看视频在线 | 日韩一级高清 | japanesehd国产在线无毒不卡 | 日韩精品一区在线观看 | 欧美成人免费午夜全 | 中国成人在线视频 | 国产香蕉在线视频一级毛片 | 美女视频黄在线观看 | 视频二区 中文字幕 欧美 | 欧美日韩精品国产一区在线 | 日韩一级片在线观看 | 玖草视频在线 | 国产欧美日韩高清专区手机版 | 亚洲偷自拍另类图片二区 | 国产色手机在线观看播放 | 免费观看成年人视频 | 91国内精品久久久久怡红院 | 欧美一级在线观看播放 | 一区二区视屏 | 欧美在线视频看看 | 91久久亚洲精品一区二区 | 欧美成人午夜毛片免费影院 | 亚洲欧洲日产国码二区在线 | 日本一区二区三区在线 视频 | 亚洲精品亚洲一区二区 | 亚洲国产成人久久综合区 | 中文字幕在线一区二区三区 | 成人欧美网站 | 精品中文字幕不卡在线视频 | 久久久久久久一线毛片 | 国产a级特黄的片子视频免费 | 久草在线免费福利视频 |