動態(tài)頁面請求并發(fā)處理方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種動態(tài)頁面請求并發(fā)處理方法和系統(tǒng)。
【背景技術(shù)】
[0002]靜態(tài)頁面是已經(jīng)存在的、無需經(jīng)過服務(wù)器編譯即可直接加載到瀏覽器上顯示出來的頁面。一個靜態(tài)頁面對應(yīng)一個固定的頁面內(nèi)容,服務(wù)器只需要將靜態(tài)頁面?zhèn)魉徒o請求者,而不需要進(jìn)行腳本計(jì)算或讀取后臺數(shù)據(jù)庫。靜態(tài)頁面的網(wǎng)址形式通常以htm”或html”等為后綴。而動態(tài)頁面實(shí)際上并不是獨(dú)立存在于服務(wù)器上的頁面文件,動態(tài)頁面上的內(nèi)容存在于數(shù)據(jù)庫中,動態(tài)頁面的形成需要服務(wù)器訪問相關(guān)應(yīng)用程序以及數(shù)據(jù)庫,動態(tài)頁面的內(nèi)容也會隨著若干參數(shù)的不同而不同,例如服務(wù)器根據(jù)不同用戶或不同時間等對同一個動態(tài)頁面的請求返回具有不同內(nèi)容的動態(tài)頁面。動態(tài)頁面的網(wǎng)頁形式通常包含“? ”等符號。
[0003]用于獲取靜態(tài)頁面的請求或稱為靜態(tài)頁面請求,相應(yīng)的,用于獲取動態(tài)頁面的請求可稱為動態(tài)頁面請求。雖然有些傳統(tǒng)的網(wǎng)頁服務(wù)器可并發(fā)支持的靜態(tài)頁面請求數(shù)量很高,但傳統(tǒng)網(wǎng)頁服務(wù)器對動態(tài)頁面請求一般都采用串行處理的方式。
[0004]為了支持對動態(tài)頁面請求的并發(fā)處理,目前通用的解決方法一般是擴(kuò)充服務(wù)器數(shù)量。然而目前這種通用的解決方法所占用的服務(wù)器資源量大,且所支持的動態(tài)頁面請求并發(fā)處理量嚴(yán)重受到服務(wù)器資源數(shù)量的限制。
【發(fā)明內(nèi)容】
[0005]為了實(shí)現(xiàn)由單獨(dú)的服務(wù)器支持動態(tài)頁面請求的并發(fā)處理,本發(fā)明提供動態(tài)頁面請求并發(fā)處理方法和系統(tǒng)。
[0006]一種動態(tài)頁面請求并發(fā)處理方法,包括以下步驟:
[0007]接收瀏覽器發(fā)送的動態(tài)頁面請求;
[0008]解析所述動態(tài)頁面請求,執(zhí)行所述動態(tài)頁面請求對應(yīng)的應(yīng)用程序;
[0009]當(dāng)所述應(yīng)用程序訪問外部接口時,記錄所述動態(tài)頁面請求的處理狀態(tài),轉(zhuǎn)而處理瀏覽器發(fā)送的其它請求;
[0010]監(jiān)聽所述外部接口是否返回數(shù)據(jù);
[0011]在監(jiān)聽到所述外部接口已經(jīng)返回數(shù)據(jù)之后,根據(jù)所述動態(tài)頁面請求的處理狀態(tài)繼續(xù)執(zhí)行所述應(yīng)用程序。
[0012]一種動態(tài)頁面請求并發(fā)處理系統(tǒng),包括:
[0013]請求接收模塊,用于接收瀏覽器發(fā)送的動態(tài)頁面請求;
[0014]請求執(zhí)行模塊,用于提取所述動態(tài)頁面請求中的應(yīng)用程序信息,根據(jù)所述應(yīng)用程序信息執(zhí)行對應(yīng)的應(yīng)用程序;
[0015]處理狀態(tài)記錄模塊,用于當(dāng)所述應(yīng)用程序訪問外部接口時,記錄所述動態(tài)頁面請求的處理狀態(tài),
[0016]所述請求執(zhí)行模塊還用于當(dāng)所述應(yīng)用程序訪問外部接口時,轉(zhuǎn)而處理瀏覽器發(fā)送的其它請求;
[0017]監(jiān)聽模塊,用于監(jiān)聽所述外部接口是否返回數(shù)據(jù);
[0018]所述請求執(zhí)行模塊還用于在監(jiān)聽到所述外部接口已經(jīng)返回數(shù)據(jù)之后,根據(jù)所述動態(tài)頁面請求的處理狀態(tài)繼續(xù)執(zhí)行所述應(yīng)用程序。
[0019]上述動態(tài)頁面請求并發(fā)處理方法和系統(tǒng),在執(zhí)行動態(tài)頁面請求對應(yīng)的應(yīng)用程序時,若應(yīng)用程序訪問外部接口,則記錄動態(tài)頁面請求的處理狀態(tài),轉(zhuǎn)而處理瀏覽器發(fā)送的其它請求,而不是進(jìn)入阻塞狀態(tài),直到外部接口返回數(shù)據(jù)為止,在處理其它請求的同時,監(jiān)聽外部接口是否返回數(shù)據(jù),在監(jiān)聽到外部接口已經(jīng)返回數(shù)據(jù)之后,可根據(jù)動態(tài)頁面請求的處理狀態(tài)繼續(xù)執(zhí)行動態(tài)頁面請求對應(yīng)的應(yīng)用程序,從而可實(shí)現(xiàn)由單獨(dú)的服務(wù)器支持對動態(tài)頁面請求的并發(fā)處理,而不需要通過增加服務(wù)器數(shù)量來實(shí)現(xiàn)對動態(tài)頁面請求的并發(fā)處理。
【附圖說明】
[0020]圖1為一個實(shí)施例中的動態(tài)頁面請求并發(fā)處理方法的流程示意圖;
[0021]圖2為一個實(shí)施例中的動態(tài)頁面并發(fā)處理方法對應(yīng)的交互示意圖;
[0022]圖3為另一實(shí)施例中的動態(tài)頁面請求并發(fā)處理方法的流程示意圖;
[0023]圖4為一個實(shí)施例中的動態(tài)頁面請求并發(fā)處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0024]圖5為另一實(shí)施例中的動態(tài)頁面請求并發(fā)處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0025]圖6為又一實(shí)施例中的動態(tài)頁面請求并發(fā)處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0026]圖7為再一實(shí)施例中的動態(tài)頁面請求并發(fā)處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0027]圖8為能實(shí)現(xiàn)本發(fā)明實(shí)施例的一個計(jì)算機(jī)系統(tǒng)1000的模塊圖。
【具體實(shí)施方式】
[0028]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0029]除非上下文另有特定清楚的描述,本發(fā)明中的元件和組件,數(shù)量既可以單個的形式存在,也可以多個的形式存在,本發(fā)明并不對此進(jìn)行限定。本發(fā)明中的步驟雖然用標(biāo)號進(jìn)行了排列,但并不用于限定步驟的先后次序,除非明確說明了步驟的次序或者某步驟的執(zhí)行需要其他步驟作為基礎(chǔ),否則步驟的相對次序是可以調(diào)整的??梢岳斫?,本文中所使用的術(shù)語“和/或”涉及且涵蓋相關(guān)聯(lián)的所列項(xiàng)目中的一者或一者以上的任何和所有可能的組口 ο
[0030]如圖1所示,在一個實(shí)施例中,一種動態(tài)頁面請求并發(fā)處理方法,包括以下步驟:
[0031]步驟S101,接收瀏覽器發(fā)送的動態(tài)頁面請求。
[0032]步驟S102,提取動態(tài)頁面請求中的應(yīng)用程序信息,根據(jù)該應(yīng)用程序信息執(zhí)行對應(yīng)的應(yīng)用程序。
[0033]在一個實(shí)施例中,步驟S102在動態(tài)頁面請求中提取的應(yīng)用程序信息為CGI程序信息,相應(yīng)的,所執(zhí)行的應(yīng)用程序?yàn)镃GI程序。
[0034]CGI (Common Gateway Interface,通用網(wǎng)關(guān)接口)是CGI程序與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI程序即是按照CGI規(guī)范編寫的Web服務(wù)器上的外部應(yīng)用程序。Web服務(wù)器的許多應(yīng)用功能通過執(zhí)行CGI程序來實(shí)現(xiàn)。
[0035]一個動態(tài)頁面請求對應(yīng)一個CGI程序。動態(tài)頁面請求攜帶的網(wǎng)址信息中包含CGI程序目錄信息。服務(wù)器上的CGI程序在動態(tài)頁面的網(wǎng)址信息中的目錄名稱、目錄名稱在網(wǎng)址信息中的位置以及CGI程序在服務(wù)器上的真實(shí)路徑被預(yù)先配置在服務(wù)器上的配置文件中(例如,CREN格式服務(wù)器上的/etc/httpd.conf)。步驟S102可查找動態(tài)頁面請求攜帶的網(wǎng)址信息中包含的CGI程序目錄信息在配置文件中所匹配的目錄名稱及目錄名稱位置,并獲取對應(yīng)的真實(shí)路徑,執(zhí)行服務(wù)器上該真實(shí)路徑下的CGI程序。
[0036]步驟S103,當(dāng)上述應(yīng)用程序訪問外部接口時,記錄上述動態(tài)頁面請求的處理狀態(tài),轉(zhuǎn)而處理瀏覽器發(fā)送的其它請求。
[0037]一條動態(tài)頁面請求的處理狀態(tài)記錄可包含動態(tài)頁面請求的標(biāo)識、對應(yīng)的應(yīng)用程序正在訪問的外部接口名稱和對應(yīng)的應(yīng)用程序的當(dāng)前執(zhí)行位置等數(shù)據(jù)項(xiàng)信息。
[0038]步驟S104,監(jiān)聽上述外部接口是否返回數(shù)據(jù)。
[0039]步驟S105,在監(jiān)聽到上述外部接口已經(jīng)返回數(shù)據(jù)之后,根據(jù)動態(tài)頁面請求的處理狀態(tài)繼續(xù)執(zhí)行上述應(yīng)用程序。
[0040]可獲取動態(tài)頁面請求的處理狀態(tài)中的對應(yīng)的應(yīng)用程序的當(dāng)前執(zhí)行位置,從該當(dāng)前執(zhí)行位置起繼續(xù)往下執(zhí)行對應(yīng)的應(yīng)用程序。
[0041]當(dāng)動態(tài)頁面請求對應(yīng)的應(yīng)用程序執(zhí)行完畢后,可得到執(zhí)行應(yīng)用程序獲得的動態(tài)頁面,從而可將執(zhí)行應(yīng)用程序獲得的動態(tài)頁面返回給發(fā)送動態(tài)頁面請求的瀏覽器。
[0042]在一個實(shí)施例中,上述動態(tài)頁面請求并發(fā)處理方法還包括步驟:將上述動態(tài)頁面請求對應(yīng)的應(yīng)用程序歷史訪問的數(shù)據(jù)導(dǎo)入內(nèi)存。可通過數(shù)據(jù)導(dǎo)入工具從數(shù)據(jù)庫中將對應(yīng)的數(shù)據(jù)導(dǎo)入內(nèi)存。
[0043]本實(shí)施例中,將動態(tài)頁面請求對應(yīng)的應(yīng)用程序歷史訪問的數(shù)據(jù)導(dǎo)入內(nèi)存,可加快數(shù)據(jù)訪問的速度,縮短執(zhí)行動態(tài)頁面請求對應(yīng)的應(yīng)用程序的時間,提高對動態(tài)頁面請求的響應(yīng)速度,從而可增加并發(fā)處理動態(tài)頁面請求的數(shù)量。
[0044]在一個實(shí)施例中,可將對應(yīng)的應(yīng)用程序預(yù)設(shè)近期內(nèi)訪問的數(shù)據(jù)中訪問頻率前預(yù)設(shè)位的數(shù)據(jù)導(dǎo)入內(nèi)存。
[0045]在此之前,上述動態(tài)頁面請求并發(fā)處理方法還包括步驟:記錄web服務(wù)器上各應(yīng)用程序的數(shù)據(jù)訪問日志,統(tǒng)計(jì)預(yù)設(shè)近期內(nèi)各應(yīng)用程序訪問的數(shù)據(jù)的訪問頻率。
[0046]本實(shí)施例中,將動態(tài)頁面請求對應(yīng)的應(yīng)用程序預(yù)設(shè)近期內(nèi)訪問的數(shù)據(jù)中訪問頻率前預(yù)設(shè)位的數(shù)據(jù)導(dǎo)入內(nèi)存,即將動態(tài)頁面請求對應(yīng)的應(yīng)用程序最近經(jīng)常訪問的數(shù)據(jù)導(dǎo)入內(nèi)存,既可提高對動態(tài)頁面請求的響應(yīng)速度,又可兼顧內(nèi)存容量有限的問題。
[0047]上述動態(tài)頁面并發(fā)處理方法中的步驟可由Web服務(wù)器執(zhí)行,具體而言,可由Web服務(wù)器進(jìn)程執(zhí)行。圖2為一個實(shí)施例中的動態(tài)頁面并發(fā)處理方法對應(yīng)的交互示意圖。如圖2所示:
[0048](I)Web服務(wù)器接收瀏覽器發(fā)送的動態(tài)頁面請求。
[0049](2)ffeb服務(wù)