鬼佬大哥大
  • / 11
  • 下載費用:30 金幣  

網絡請求處理方法和裝置.pdf

摘要
申請專利號:

CN201510534335.6

申請日:

2015.08.26

公開號:

CN105069163A

公開日:

2015.11.18

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 17/30申請日:20150826|||公開
IPC分類號: G06F17/30; H04L29/08 主分類號: G06F17/30
申請人: 廣州神馬移動信息科技有限公司
發明人: 莫智慧; 孟杰
地址: 510627廣東省廣州市天河區黃埔大道西平云路163號廣電平云廣場B塔12層自編01單元
優先權:
專利代理機構: 北京弘權知識產權代理事務所(普通合伙)11363 代理人: 逯長明; 許偉群
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510534335.6

授權公告號:

||||||

法律狀態公告日:

2018.01.09|||2015.12.16|||2015.11.18

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本申請公開了一種網絡請求處理方法和裝置,其利用PHP語言中數據傳輸工具CURL的批處理功能模擬多線程處理方式,即首先創建CURL批處理句柄以及與各個URL請求對應的CURL請求,再通過該CURL批處理句柄同時對各個CURL請求進行處理,也即實現并行處理多個URL請求,不僅維護成本低,還可以大大縮減網絡請求處理耗時,提高網頁響應速度,提升用戶體驗。

權利要求書

1.一種網絡請求處理方法,其特征在于,所述方法包括:
當確認待處理的網絡請求包含無時序關聯的至少兩個URL請求時,創建CURL批處理
句柄;
為所述至少兩個URL請求分別創建對應的CURL請求;
通過所述CURL批處理句柄并行處理所述CURL請求,得到所述URL請求對應的響應
數據。
2.根據權利要求1所述的方法,其特征在于,還包括:
在得到所述URL請求對應的響應數據之后,獲取與所述響應數據對應的傳輸消息。
3.根據權利要求2所述的方法,其特征在于,還包括:
如果所述傳輸信息中存在錯誤碼,則將所述錯誤碼記入錯誤日志中;
如果所述傳輸信息中不存在錯誤碼,則獲取并執行相應CURL請求對應的回調方法。
4.根據權利要求2所述的方法,其特征在于,還包括:
在得到所述URL請求對應的響應數據之后,監聽各個CURL請求對應的CURL文件描
述符,并在所述CURL文件描述符改變時,執行所述獲取與所述響應數據對應的傳輸消息。
5.根據權利要求2至4所述的方法,其特征在于,還包括:
在獲取與所述響應數據對應的傳輸消息之后,判斷是否存在處于活躍狀態的CURL
請求;如果不存在,則釋放所述CURL批處理句柄。
6.一種網絡請求處理裝置,其特征在于,包括:
批處理句柄創建單元,用于在確認待處理的網絡請求包含無時序關聯的至少兩個
URL請求時,創建CURL批處理句柄;
請求轉換單元,用于為所述至少兩個URL請求分別創建對應的CURL請求;
批處理單元,用于通過所述CURL批處理句柄并行處理所述CURL請求,得到所述URL
請求對應的響應數據。
7.根據權利要求6所述的裝置,其特征在于,還包括:
傳輸消息獲取單元,用于在得到所述URL請求對應的響應數據之后,獲取與所述響
應數據對應的傳輸消息。
8.根據權利要求7所述的裝置,其特征在于,還包括:
錯誤碼處理單元,用于在所述傳輸信息中存在錯誤碼時,將所述錯誤碼記入錯誤日
志中;
回調單元,用于在所述傳輸信息中不存在錯誤碼時,獲取并執行相應CURL請求對應
的回調方法。
9.根據權利要求7所述的裝置,其特征在于,還包括:
監聽單元,用于在得到所述URL請求對應的響應數據之后,監聽各個CURL請求對應
的CURL文件描述符,并在所述CURL文件描述符改變時,觸發所述傳輸消息獲取單元。
10.根據權利要求7至9所述的裝置,其特征在于,還包括:
處理狀態監測單元,用于在獲取與所述響應數據對應的傳輸消息之后,判斷是否存
在處于活躍狀態的CURL請求;如果不存在,則釋放所述CURL批處理句柄。

說明書

網絡請求處理方法和裝置

技術領域

本發明涉及數據處理技術領域,特別是涉及一種網絡請求處理方法和裝置。

背景技術

超文本預處理器(HypertextPreprocessor,PHP),是一種在Web服務器端執行的
HTML內嵌式腳本編程語言,PHP語言的一個重要應用是Web動態網頁設計,其突出的特
點就是單線程處理方式,即在處理網絡請求時,同一時刻只存在一個線程、處理一個網
絡請求,不能在其腳本程序中創建另一個線程去同時執行其他請求,而是只能在當前腳
本程序處理完當前的網絡請求后,再創建下一個腳本程序去處理另外一個請求。

然而在實際應用中,用戶在電腦客戶端或移動客戶端執行的一個線上操作通常會觸
發多個網絡請求。例如:用戶在某個社交網頁上發布新信息或發表對其他用戶的評論后,
該用戶的積分、等級就會發生相應的改變,網頁向該用戶推送的消息也會相應變化;其
中,積分改變、等級改變、推送信息這三個事件就是三個并發的網絡請求;如果采用現
有基于PHP語言的單線程處理方式,該社交網頁對應的Web服務器需要逐一對上述三個
網絡請求進行處理,用戶也只能等待Web服務器對上述三個事件的請求都處理完成后,
才能獲得最新的網頁響應。

可見,現有基于PHP語言的單線程處理方式,Web服務器在處理多個并發網絡請求
時,耗費時間較長,網絡響應速度慢,從而導致用戶等待時間長,操作體驗好感度差。

發明內容

為了解決上述技術問題,本申請公開了一種網絡請求處理方法和裝置。

本申請第一方面提供了一種網絡請求處理方法,所述方法包括:

當確認待處理的網絡請求包含無時序關聯的至少兩個URL請求時,創建CURL批處
理句柄;

為所述至少兩個URL請求分別創建對應的CURL請求;

通過所述CURL批處理句柄并行處理所述CURL請求,得到所述URL請求對應的響應
數據。

結合第一方面,在第一方面第一種可行的實施方式中,所述方法還包括:

在得到所述URL請求對應的響應數據之后,獲取與所述響應數據對應的傳輸消息。

結合第一方面第一種可行的實施方式,在第一方面第二種可行的實施方式中,所述
方法還包括:

如果所述傳輸信息中存在錯誤碼,則將所述錯誤碼記入錯誤日志中;

如果所述傳輸信息中不存在錯誤碼,則獲取并執行相應CURL請求對應的回調方法。

結合第一方面第一種可行的實施方式,在第一方面第三種可行的實施方式中,所述
方法還包括:

在得到所述URL請求對應的響應數據之后,監聽各個CURL請求對應的CURL文件描
述符,并在所述CURL文件描述符改變時,執行所述獲取與所述響應數據對應的傳輸消息。

結合第一方面第一種可行的實施方式,或者第一方面第二種可行的實施方式,或者
第一方面第三種可行的實施方式,在第一方面第四種可行的實施方式中,所述方法還包
括:

在獲取與所述響應數據對應的傳輸消息之后,判斷是否存在處于活躍狀態的CURL
請求;如果不存在,則釋放所述CURL批處理句柄。

本申請第二方面提供了一種網絡請求處理裝置,所述裝置包括:

批處理句柄創建單元,用于在確認待處理的網絡請求包含無時序關聯的至少兩個
URL請求時,創建CURL批處理句柄;

請求轉換單元,用于為所述至少兩個URL請求分別創建對應的CURL請求;

批處理單元,用于通過所述CURL批處理句柄并行處理所述CURL請求,得到所述URL
請求對應的響應數據。

結合第二方面,在第二方面第一種可行的實施方式中,所述裝置還包括:

傳輸消息獲取單元,用于在得到所述URL請求對應的響應數據之后,獲取與所述響
應數據對應的傳輸消息。

結合第二方面第一種可行的實施方式,在第二方面第二種可行的實施方式中,所述
裝置還包括:

錯誤碼處理單元,用于在所述傳輸信息中存在錯誤碼時,將所述錯誤碼記入錯誤日
志中;

回調單元,用于在所述傳輸信息中不存在錯誤碼時,獲取并執行相應CURL請求對
應的回調方法。

結合第二方面第一種可行的實施方式,在第二方面第三種可行的實施方式中,所述
裝置還包括:

監聽單元,用于在得到所述URL請求對應的響應數據之后,監聽各個CURL請求對
應的CURL文件描述符,并在所述CURL文件描述符改變時,觸發所述傳輸消息獲取單元。

結合第二方面第一種可行的實施方式,或者第二方面第二種可行的實施方式,或者
第二方面第三種可行的實施方式,在第二方面第四種可行的實施方式中,所述裝置還包
括:

處理狀態監測單元,用于在獲取與所述響應數據對應的傳輸消息之后,判斷是否存
在處于活躍狀態的CURL請求;如果不存在,則釋放所述CURL批處理句柄。

由以上技術方案可知,本申請實施例利用PHP語言中數據傳輸工具CURL的批處理
功能模擬多線程處理方式,即首先創建CURL批處理句柄以及與各個URL請求對應的CURL
請求,再通過該CURL批處理句柄同時對各個CURL請求進行處理,也即實現并行處理多
個URL請求,不僅維護成本低,還可以大大縮減網絡請求處理耗時,提高網頁響應速度,
提升用戶體驗。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有
技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而
言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本申請一個實施例提供的網絡請求處理方法的流程圖;

圖2為本申請另一個實施例提供的網絡請求處理方法的的流程圖;

圖3為本申請又一個實施例提供的網絡請求處理方法的的流程圖;

圖4為本申請一個實施例提供的網絡請求處理裝置的結構框圖;

圖5為本申請另一個實施例提供的網絡請求處理裝置的結構框圖;

圖6為本申請又一個實施例提供的網絡請求處理裝置的結構框圖。

具體實施方式

首先對本申請提供的網絡請求處理方法的實施例進行說明。本申請提供的網絡請求
處理方法應用于基于PHP語言搭建的Web服務器,以實現該Web服務器快速處理來自電
腦客戶端或移動客戶端的網絡請求。

圖1為本申請實施例提供的一種網絡請求處理方法的流程圖。參照圖1,該處理方
法包括:

S11、當確認待處理的網絡請求包含無時序關聯的至少兩個URL請求,創建CURL批
處理句柄。

上述CURL是指PHP語言中一種利用URL語法規定來傳輸數據的工具,通過CURL批
處理句柄可以實現批處理功能。

S12、為所述至少兩個URL請求分別創建對應的CURL請求。

上述創建CURL請求的步驟,具體包括:根據URL請求個數,創建等數量的CURL請
求句柄,并建立與URL請求之間的一一映射關系,分別初始化各個CURL請求句柄,批量
設置各個CURL請求的參數選項。其中,該參數選項具體包括:相應的URL請求的URL,
URL請求的過期時間,以及URL請求的POST字段等。

S13、通過所述CURL批處理句柄并行處理所述CURL請求,得到所述URL請求對應
的響應數據。

本實施例利用CURL批處理功能來模擬多線程處理方式,通過調用curl_multi_exec
函數解析CURL批處理句柄,依據各個CURL請求對應的URL獲取響應數據,從而實現并
行處理多個URL請求,可以大大縮減網絡請求處理耗時,也即提高網頁響應速度。

例如,一個頁面中數據包含用戶關注列表,用戶排行,用戶近期消費記錄三種;在
客戶端請求展示該頁面時,相當于同時向Web服務器發送了三個URL請求,分別為:獲
取用戶關注列表的第一URL請求、獲取用戶排行的第二URL請求、獲取用戶近期消費記
錄的第三URL請求;相應的,第一URL請求對應的響應數據即用于展現用戶關注列表的
數據,第二URL請求對應的響應數據即用于展現用戶排行的數據,第三URL請求對應的
響應數據即用于展現用戶近期消費記錄的數據。其中,第一URL請求處理時間是200ms、
第二URL請求處理時間是300ms、第三URL請求處理時間是300ms。若采用現有單線程處
理方式,Web服務器所需的處理總時間長為200ms+300ms+300ms=800ms,頁面展現在客戶
端上所需的時間為1s左右。但是,若采用本實施例提供的處理方法,Web服務器會同時
處理以上三個URL請求,所需的處理總時間長為300ms(以上三個URL請求中單個處理
時長最大為300ms),頁面展現在客戶端上所需的時間約為300ms至500ms。可見,相對
于現有技術,本實施例可以大大縮減網絡請求處理耗時,提高網頁響應速度,提升用戶
體驗。

需要說明的是,本申請實施例所述的網絡請求主要包括由客戶端發送到Web服務器
的請求消息,相應的,CURL批處理過程中,響應數據由Web服務器通過網絡傳輸至客戶
端,故各個CURL請求的處理速度受網絡傳輸數據速度的限制,不能保證該各個請求處理
完成的順序,因此,本方案適用于無時序關聯,即彼此相對獨立的多個URL請求的場景。
對于存在時序關聯、必須按照一定的順序處理的多個URL請求,可仍采用現有單線程處
理方式,根據其時序關聯順序執行各個URL請求。

由以上步驟可知,本申請實施例利用PHP語言中CURL批處理功能模擬多線程處理
方式,即首先創建CURL批處理句柄以及與各個URL請求對應的CURL請求,再通過該CURL
批處理句柄同時對各個CURL請求進行處理,也即實現并行處理多個URL請求,不僅維護
成本低,還可以大大縮減網絡請求處理耗時,提高網頁響應速度,提升用戶體驗。

另外,如果確認待處理的網絡請求只有一個,則直接執行即可,不需要創建CURL
批處理句柄;具體可以包括如下步驟:

將該URL請求的參數(包括請求的URL,請求過期時間,請求POST字段等)進行整
合;

針對該URL請求初始化一個CURL會話,依據上述整合后的參數對該CURL會話參數
進行設置,并執行該CURL會話;

獲取該CURL會話返回的錯誤碼,如果存在該錯誤碼,則將其作為錯誤信息寫入錯誤
日志;

如果不存在上述錯誤碼,則獲取并執行該URL請求對應的回調方法,執行完成后關
閉該CURL會話;如果不存在相應的回調方法,則直接關閉該CURL會話即可。

圖2所示為本申請另一個實施例提供的網絡請求處理方法的流程圖。相對于圖1所
示實施例,圖2所示實施例在步驟S13后還包括:

S14、獲取與所述響應數據對應的傳輸消息。

本實施例具體可以通過調用curl_multi_info_read函數來獲取上述傳輸消息;該
傳輸消息具體可以包括:從單獨的傳輸線程返回的錯誤碼、指示響應數據是否已完成傳
輸的報告等。

根據獲取到的傳輸消息,本實施例提供的網絡請求處理方法還包括:如果所述傳輸
信息中存在錯誤碼,則將所述錯誤碼記入錯誤日志中,并釋放相應的CURL請求句柄;如
果所述傳輸信息中不存在錯誤碼,則獲取并執行相應CURL請求對應的回調方法,并在執
行完該回調方法后釋放相應的CURL請求句柄。具體的,本實施例根據步驟S12中創建
CURL請求時得到的一一映射關系,獲取與CURL請求對應的URL請求的回調方法。

仍參照圖2,在步驟S14后,本實施例提供的網絡請求處理方法還包括:

S15、判斷是否存在處于活躍狀態的CURL請求;如果存在處于活躍狀態的CURL請
求,則返回步驟S13,否則執行步驟S16;

S16、釋放所述CURL批處理句柄。

在一種可行的具體實施方式中,通過獲得響應數據時返回的PHP常量判讀相應CURL
請求是否處于活躍狀態。具體的,如果返回的PHP常量為CURLM_OK,表明相應CURL請
求已處理完成,如果返回的PHP常量為CURLM_CALL_MULTI_PERFORM,表明相應的CURL
請求還沒有處理完;如果返回的PHP常量中存在CURLM_CALL_MULTI_PERFORM,則可以判
定存在處于活躍狀態(即未處理完)的CURL請求,故等待以繼續處理未完成的CURL請
求,直至各個CURL請求返回的PHP常量均為CURLM_OK,則可以判定不存在處于活躍狀
態的CURL請求,即并發的多個URL請求全部處理完,從而可以釋放CURL批處理句柄。

可見,本實施例通過監測CURL請求的活躍狀態,來判斷批處理的各個CURL請求是
否已全部處理完成,可以保證成功獲取到所有URL請求的響應數據,避免響應數據獲取
不完整。

上述實施例中,由于CURL請求的處理速度對網絡傳輸速度的依賴性較強,在網絡
傳輸速度較低時,可能需要較長的時間才能傳輸完相關的響應數據。而步驟S13執行完
成時只表明響應的CURL請求數據傳輸完成,其響應數據還未完全傳輸至客戶端,在執行
步驟S14時也就無法讀取與響應數據對應的傳輸消息,返回繼續執行S13,如此循環會
導致循環取數據、判斷是否有孩子執行的請求,導致處理器(CPU)IO飆升(頻繁的輸
入、輸出),影響服務的穩定性。有鑒于此,本申請實施例提供了圖3所示的網絡請求處
理方法。相對于圖2,參照圖3所示方法在步驟S13和S14之間還包括:

S13’、監聽各個CURL請求對應的CURL文件描述符并判斷所述CURL文件描述符是
否改變,如果所述CURL文件描述符改變,則執行步驟S14,否則再次執行本步驟S13’。

本實施例通過監聽CURL文件描述符對網絡請求處理程序進行加鎖,可以避免程序
處于忙空轉狀態,避免IO飆升,進而保證服務的穩定性。

與上述網絡請求處理方法的實施例相對應,本申請實施例還提供了一種網絡請求處
理裝置,該裝置同樣應用于基于PHP語言搭建的Web服務器。圖4為該網絡請求處理裝
置的一種結構框圖。參照圖4,該裝置包括:批處理句柄創建單元100、請求轉換單元
200和批處理單元300。

其中,該批處理句柄創建單元100用于,在確認待處理的網絡請求包含無時序關聯
的至少兩個URL請求時,創建CURL批處理句柄;

該請求轉換單元200用于,為所述至少兩個URL請求分別創建對應的CURL請求;

該批處理單元300用于,通過所述CURL批處理句柄并行處理所述CURL請求,得到
所述URL請求對應的響應數據。

上述實施例提供的網絡請求處理裝置利用PHP語言中CURL批處理功能模擬多線程
處理方式,即首先創建CURL批處理句柄以及與各個URL請求對應的CURL請求,再通過
該CURL批處理句柄同時對各個CURL請求進行處理,也即實現并行處理多個URL請求,
不僅維護成本低,還可以大大縮減網絡請求處理耗時,提高網頁響應速度,提升用戶體
驗。

圖5為本申請另一實施例提供的網絡請求處理裝置的結構框圖。相對于圖4,圖5
所示裝置還包括:傳輸消息獲取單元400。

該傳輸消息獲取單元400用于,在得到所述URL請求對應的響應數據之后,獲取與
所述響應數據對應的傳輸消息。

基于上述傳輸消息獲取單元400,上述網絡請求處理裝置還包括:錯誤碼處理單元
和回調單元。

其中,錯誤碼處理單元用于,在所述傳輸信息中存在錯誤碼時,將所述錯誤碼記入
錯誤日志中,并釋放相應的CURL請求句柄。

回調單元用于,在所述傳輸信息中不存在錯誤碼時,獲取并執行相應CURL請求對
應的回調方法,并在回調方法執行完成后釋放相應的CURL請求句柄。

另外,圖5所示裝置還包括:處理狀態監測單元500。該處理狀態監測單元500用
于,在獲取與所述響應數據對應的傳輸消息之后,判斷是否存在處于活躍狀態的CURL
請求;如果不存在,則釋放所述CURL批處理句柄。

可見,本實施例通過監測CURL請求的活躍狀態,來判斷批處理的各個CURL請求是
否已全部處理完成,可以保證成功獲取到所有URL請求的響應數據,避免響應數據獲取
不完整。

圖6為本申請又一實施例提供的網絡請求處理裝置的結構框圖。相對于圖5,圖6
所示裝置還包括:監聽單元600。

該監聽單元600用于,在批處理單元300得到所述URL請求對應的響應數據之后,
監聽各個CURL請求對應的CURL文件描述符,并在所述CURL文件描述符改變時,觸發所
述傳輸消息獲取單元400。

本實施例通過監聽CURL文件描述符對網絡請求處理程序進行加鎖,可以避免程序
處于忙空轉狀態,避免IO飆升,進而保證服務的穩定性。

另外,本申請實施例還提供了一種計算機存儲介質,例如可以是ROM、隨機存取存
儲器(RAM)、CD-ROM、磁帶、軟盤和光數據存儲設備等;該計算機存儲介質中存儲有程
序,當所述存儲介質中的程序由服務端的處理器執行時,使得服務端能夠執行上述方法
實施例中記載的網絡請求處理方法的部分或全部步驟。

本領域的技術人員可以清楚地了解到本發明實施例中的技術可借助軟件加必需的
通用硬件的方式來實現,通用硬件包括通用集成電路、通用CPU、通用存儲器、通用元
器件等,當然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元
器件等來實現,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明實施例
中的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出
來,該計算機軟件產品可以存儲在存儲介質中,如只讀存儲器(ROM,Read-OnlyMemory)、
隨機存取存儲器(RAM,RandomAccessMemory)、磁碟、光盤等,包括若干指令用以使
得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實
施例或者實施例的某些部分所述的方法。

本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分
互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置
和系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參
見方法實施例的部分說明即可。

以上所述的本發明實施方式,并不構成對本發明保護范圍的限定。任何在本發明的
精神和原則之內所作的修改、等同替換和改進等,均應包含在本發明的保護范圍之內。

關 鍵 詞:
網絡 請求 處理 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:網絡請求處理方法和裝置.pdf
鏈接地址:http://www.wwszu.club/p-6385994.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大