freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于apache源代碼的web應(yīng)用服務(wù)器的體系結(jié)構(gòu)分析論文-文庫吧資料

2025-06-24 21:19本頁面
  

【正文】 ap_fini_vhost_config(pconf, server_conf)。}rv = ap_process_config_tree(server_conf, ap_conftree, processpconf, ptemp)。如果在啟動Apache的時候通過E選項(xiàng)指定了日志文件,那么,此時必須使用ap_replace_stderr_log進(jìn)行輸出日志文件替換。if (temp_error_log) { ap_replace_stderr_log(processpool, temp_error_log)。除此之外,在啟動的時候還需要一個臨時內(nèi)存池——ptemp。層次越深的內(nèi)存池它的生存周期就越短,反之,距離根節(jié)點(diǎn)越近,它的生存周期就越長。apr_pool_tag(ptemp, ptemp)。apr_pool_create(amp。plog, pglobal)。/* bad cmdline option? then we die */if (rv != APR_EOF || optind optargc) { usage(process)。h和?輸出一個可用的命令行選項(xiàng)的簡要說明。?39。h39。M輸出一個已經(jīng)啟用模塊列表,包括靜態(tài)編譯在服務(wù)器中的模塊和作為DSO動態(tài)加載的模塊。 *new = “DUMP_MODULES”。case ‘M’: configtestonly = 1。 break。 new = (char **)apr_array_push(ap_server_config_defines)。t選項(xiàng)意味著僅對配置文件執(zhí)行語法檢查。:configtestonly = 1。case 39。 destroy_and_exit_process(process, 0)。L39。它不會列出使用LoadModule指令動態(tài)的模塊。 destroy_and_exit_process(process, 0)。l39。V選項(xiàng)用于顯示d和APR/APRUtil的版本和編譯參數(shù),然后退出。: show_pile_settings()。case 39。 destroy_and_exit_process(process, 0)。: printf(Server version: %s\n, ap_get_server_version())。case 39。如果config不以“/”開頭,則它是相對于ServerRoot的路徑。 break。f39。X選項(xiàng)指定當(dāng)前Apache以調(diào)式模式運(yùn)行,在此模式下,Apache進(jìn)啟動一個工作進(jìn)程,并且服務(wù)器不與控制臺脫離。 *new = DEBUG。X39。E file選項(xiàng)用于將服務(wù)器的啟動過程中的出錯信息發(fā)送到file。: temp_error_log = apr_pstrdup(processpool, optarg)。case 39。e level選項(xiàng)在服務(wù)器啟動時,設(shè)置日志的LogLevel為level。} else { usage(process)。}else if (strcasecmp(optarg, info) == 0) {ap_default_loglevel = APLOG_INFO。}else if (strncasecmp(optarg, warn, 4) == 0) { ap_default_loglevel = APLOG_WARNING。}else if (strcasecmp(optarg, crit) == 0) {ap_default_loglevel = APLOG_CRIT。:if (strcasecmp(optarg, emerg) == 0) { ap_default_loglevel = APLOG_EMERG。case 39。 break。: new = (char **)apr_array_push(ap_server_config_defines)。case 39。它可以將配置文件中的ServerRoot指令所覆蓋。 break。d39。c中的指令保存到ap_server_post_read_config數(shù)組中,而C中的指令則保存到ap_server_ pre_read_config數(shù)組中。C選項(xiàng)指定了再讀取配置文件之前必須先處理directive的配置指令。 *new = apr_pstrdup(pmands, optarg)。 break。: new = (char **)apr_array_push(ap_server_post_read_config)。 switch (c) { case 39。c, amp。opt, pmands, processargc, processargv)。當(dāng)d啟動的時候,它可能會帶有一系列的命令行參數(shù)。對于一些MPM(如Event MPM、work MPM),它們須將命令行中傳入的參數(shù)轉(zhuǎn)換為MPM內(nèi)部的參數(shù)。 destroy_and_exit_args(process, 1)。error = ap_run_rewrite_args(process)。ap_setup_prelinked_modules用于將所有預(yù)鏈接的模塊加入到加載模塊鏈接表中。ap_server_post_read_config = apr_array_make(pmands, 1, sizeof(char *))。apr_pool_tag(pmands, pmands)。apr_pool_create(amp。如果不保存,這些指令將會丟失。前者是防止指令行中的指令被覆蓋,而后者則相反。Apache中的指令分為兩大類:指令行中的指令及配置文件中的指令。pool和pconf則分別是全局內(nèi)存池和配置相關(guān)內(nèi)存池。 }。 const char * const *argv。 apr_pool_t *pconf。對Apache而言,指令信息不僅主程序要使用,而且在一些子進(jìn)程程序中也要使用,因此這就存在指令行信息傳遞問題。ap_server_argv0 = processshort_name。pglobal = processpool。 任何一個應(yīng)用程序如果要使用APR庫進(jìn)行二次開發(fā),那么首先必須為完成的任務(wù)是APR庫的初始化。argc, amp。代碼剖析用于檢查代碼的運(yùn)行情況,從而可以找到程序執(zhí)行的瓶頸,通常用于調(diào)試階段。 AP_MONCONTROL(0)。 const char *optarg。 apr_status_t rv。 /* Pool for temporary config stuff, reset often */ apr_pool_t *pmands。 apr_pool_t *plog。 apr_pool_t *pglobal。 process_rec *process。 const char *def_server_root = HTTPD_ROOT。 int configtestonly = 0。 主程序main 主程序概要Apache的主函數(shù)main()位于${Apache}/server目錄下,它的主要功能則著重于預(yù)處理,主要包括以下幾個方面。與請求數(shù)據(jù)一旦讀取就被壓入輸入過濾器鏈表一樣,生成的這些內(nèi)容一旦生成,就將被壓入到輸出過濾器鏈表進(jìn)行輸出處理。 內(nèi)容生成當(dāng)所有的請求在請求處理階段處理完畢后,它就調(diào)用適當(dāng)?shù)奶幚砥魃上鄳?yīng)內(nèi)容。(2)fixups這是請求處理的最后一個階段。(3)auth_check該階段主要檢查用戶是否有訪問該資源的權(quán)限。2.安全處理階段(1)access_checker該階段主要是對客戶的訪問做一些基礎(chǔ)性的限制工作。(6)二次URL相關(guān)配置文件讀取在進(jìn)行了名稱轉(zhuǎn)換之后,我們需要再次讀取它新的URL關(guān)聯(lián)的配置信息。比如Alias指令將某個URL映射到另一個特定的URL中;而mod_write模塊則用于對URL的完全重寫。完整配置信息是兩次讀取信息的最終疊加。URL關(guān)聯(lián)的配置信息需要兩次,此處一次讀取。在請求處理的后續(xù)階段中,比如用戶授權(quán)認(rèn)證,權(quán)限控制等都需要依賴與讀取的配置信息。這個階段是不能省略的,必須被執(zhí)行。1.請求解析階段(1)URL字符轉(zhuǎn)義該階段是一個必須的階段,那么該階段將不會被處理。 請求處理對于HTTP報文,Apache調(diào)用ap_process_request函數(shù)對請求進(jìn)行實(shí)質(zhì)的處理。在所有的過濾器處理完畢后,我們得到的就是一個最終的處理后的請求報文。對于讀取的報文還有一個重要的任務(wù)就是讀取的報文進(jìn)行輸入過濾器處理。該結(jié)構(gòu)是一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),其中包含了HTTP請求的各個方面。在連接處理過程中,通過調(diào)用ap_read_request函數(shù)進(jìn)入請求讀取過程,然后調(diào)用ap_process_request對該請求進(jìn)行處理。任何模塊模塊如果要處理連接,都可以實(shí)現(xiàn)該掛鉤。通過該IP地址,便可以確定該IP地址所對應(yīng)的虛擬主機(jī)族,因此,連接處理的第一件事情就是更新虛擬主機(jī)的相關(guān)信息。MPM是Apache服務(wù)器和操作系統(tǒng)之間的接口,它的目的只有一個,就是充分利用操作系統(tǒng)特性,對服務(wù)器的并發(fā)進(jìn)行最大化的優(yōu)化。第一次稱之為預(yù)讀取,主要是從配置文件中獲取第二次配置文件中需要的一些配置信息;基于第一次讀取的結(jié)果,第二次才是真正的配置文件讀取。另外,初始化的一個重要任務(wù)就是對配置文件驚醒讀取和解析。在啟動的過程中,初始化工作包括以下幾個方面。 Apache啟動過程Apache的啟動包括兩個階段:高權(quán)限啟動階段和低權(quán)限運(yùn)行階段,通常稱之為兩階段啟動方式。(2)接受客戶端連接,并處理該連接。圖33 Apache各組件之間的交互關(guān)系 Apache運(yùn)行流程Apache的運(yùn)行流程可以細(xì)分為三個大的階段。 核心組件對于Apache而言,Apache核心組件包括下面幾大部分。核心模塊通常必須靜態(tài)加載,而非核心模塊則既可以靜態(tài)加載,也可以動態(tài)加載。在處理過程中,核心并不會去關(guān)心誰是核心模塊,誰是可選模塊,它們都是一視同仁地被調(diào)用。 Apache核心功能層 核心與可選模塊的關(guān)系A(chǔ)pache核心與Apache模塊之間的關(guān)系是調(diào)用和被調(diào)用的關(guān)系,所有的模塊都是直接與核心進(jìn)行交互。 可選功能層可選功能層通常指Apache模塊。前者負(fù)責(zé)處理文件中大部分配置指令,并根據(jù)這些指令運(yùn)行Apache,而后者則負(fù)責(zé)動態(tài)加載其余的模塊,缺少了該模塊,其余的模塊就無法使用。這些模塊的缺失至多影響Apache功能完整性,并不影響運(yùn)行。Apache的核心程序主要用于實(shí)現(xiàn)Apache作為HTTP服務(wù)器的基本功能,這些基本功能包括:(1)啟動和停止Apache(2)處理配置文件()(3)接受和處理HTTP連接(4)讀取HTTP請求并對該請求進(jìn)行處理(5)處理HTTP協(xié)議核心層另一個重要組成部分就是核心模塊。 核心功能層對于Apache而言,其最核心的功能則位于第三層,我們稱之為核心功能層。APR的任務(wù)是屏蔽底層的操作系統(tǒng)API細(xì)節(jié),對于所有的操作系統(tǒng),提供一個完全相同的函數(shù)接口。離開了操作系統(tǒng),Apache就失去了存在的根基。圖32描述了Apache中的層次關(guān)系。docs目錄中包含了Apache提供的文檔test目錄中包含了很多APR庫使用的測試函數(shù)。srclib目錄中包含了Apache開發(fā)和運(yùn)行所需要的基礎(chǔ)庫。代理模塊名稱為proxy。另外一個重要的目錄就是modules,顧名思義,其中保存著Apache中的所有模塊。它們之間既互相獨(dú)立,又能互相替換。sslproxyincludedocssupportbuildtestsrclibaprutilaprpcre圖31 整個Apache核心功能包括請求處理、協(xié)議處理等功能,實(shí)現(xiàn)文件全部包含在server目錄中,server目錄中又包含一個稱之為mpm的目錄。 Apache目錄在了解整個Apache體系結(jié)構(gòu)之前,我們必須先了解Apache的源代碼是如何組成的。幸運(yùn)的是,Apache采用了模塊化的體系結(jié)構(gòu),它的大部分功能都被分割為相互獨(dú)立的模塊。Apache服務(wù)器是一個非常復(fù)雜的服務(wù)器,一方面,它是為處理Web應(yīng)用而存在的,因此,它不需要實(shí)現(xiàn)所有與Web服務(wù)器相關(guān)的技術(shù),比如HTTP協(xié)議、授權(quán)處理等;另一方面,它又是一個服務(wù)器,因此,它必須考慮到服務(wù)器設(shè)計的各種關(guān)鍵技術(shù),比如如何承載高負(fù)載,如何方便地進(jìn)行功能拓展等。沈陽工程學(xué)院畢業(yè)論文 第3章 Apache體系結(jié)構(gòu)第3章 Apache體系結(jié)構(gòu)本章從整體上介紹了Apache的三層體系結(jié)構(gòu),并著重介紹了核心功能層,分析了核心功能層中各個重要的組件及它們之間的相互依賴關(guān)系。Views和Models之間的關(guān)系可用Observer Pattern體現(xiàn)。 MVC三層體系結(jié)構(gòu)之間的依賴關(guān)系MVC模式是一個復(fù)雜的架構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜,但多種設(shè)計模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對簡單易行。只要Controller 改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會自動更新。MVC應(yīng)用程序總是由三個部分組成。 MV
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1