本發(fā)明涉及服務(wù)器領(lǐng)域,特別是涉及一種檢測服務(wù)器是否正常運(yùn)行的方法。
背景技術(shù):
在現(xiàn)有的看門狗定時(shí)器技術(shù)中,看門狗定時(shí)器內(nèi)部有一個(gè)遞減計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器遞減為0的時(shí)候,就會(huì)自動(dòng)重啟系統(tǒng),如果擁有這樣的程序,該程序在定時(shí)器計(jì)數(shù)器遞減為0之前,將其遞減計(jì)數(shù)器重新設(shè)置一下(喂狗),那么就會(huì)產(chǎn)生重啟操作。假如機(jī)器設(shè)備出現(xiàn)異常情況下如死機(jī),CPU執(zhí)行出錯(cuò),程序跑飛等情況,CPU就會(huì)陷入非正常的執(zhí)行流程,就不會(huì)去執(zhí)行重置計(jì)數(shù)器的操作,當(dāng)計(jì)數(shù)器遞減為0時(shí),執(zhí)行重啟操作,服務(wù)器就會(huì)重啟,恢復(fù)正常執(zhí)行流程。
但是,該技術(shù)只能在程序已經(jīng)明確崩潰的時(shí)候,無法執(zhí)行看門狗技術(shù)中的“喂狗”機(jī)制(該技術(shù)為公知技術(shù))時(shí),才能發(fā)揮作用。在程序由于已知原因(如:內(nèi)存泄漏)或未知原因不能正常工作,但程序中的“喂狗”機(jī)制仍在執(zhí)行時(shí),看門狗定時(shí)器技術(shù)就無法發(fā)揮作用了。
有鑒于此,本發(fā)明人專門設(shè)計(jì)了一種檢測服務(wù)器是否正常運(yùn)行的方法,本案由此產(chǎn)生。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種檢測服務(wù)器是否正常運(yùn)行的方法,其解決了在程序由于已知原因或未知原因不能正常工作,但程序中的“喂狗”機(jī)制仍在執(zhí)行時(shí),看門狗定時(shí)器無法發(fā)揮作用的情況。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
一種檢測服務(wù)器是否正常運(yùn)行的方法,所述方法提供一個(gè)判斷模塊、一個(gè)WinHTTP模塊以及一服務(wù)器的服務(wù)程序lddsmMainApp,判斷模塊內(nèi)嵌在Windows服務(wù)中,所述方法包括以下步驟:
S01:判斷模塊每隔一預(yù)設(shè)時(shí)間調(diào)用WinHTTP模塊,WinHTTP模塊訪問服務(wù)器的服務(wù)程序lddsmMainApp,并從服務(wù)器的服務(wù)程序lddsmMainApp獲取返回結(jié)果集;
S02:判斷模塊判斷返回結(jié)果集是否為空,若返回結(jié)果集不為空,則執(zhí)行步驟S03,若返回結(jié)果集為空,則執(zhí)行步驟S04;
S03:判斷模塊獲取返回結(jié)果集中的數(shù)據(jù)集合,并根據(jù)返回結(jié)果集中的數(shù)據(jù)集合是否包含預(yù)設(shè)關(guān)鍵字來確定服務(wù)器是否正常運(yùn)行,若包含預(yù)設(shè)關(guān)鍵字,則說明服務(wù)器正常運(yùn)行并返回執(zhí)行步驟S01,若不包含預(yù)設(shè)關(guān)鍵字,則說明服務(wù)器沒有正常運(yùn)行并執(zhí)行步驟S04;
S04:重啟服務(wù)器的服務(wù)程序lddsmMainApp。
優(yōu)選地,所述Windows服務(wù)在服務(wù)器端保持24小時(shí)不間斷運(yùn)行。
優(yōu)選地,所述預(yù)設(shè)時(shí)間為5分鐘。
優(yōu)選地,所述預(yù)設(shè)關(guān)鍵字包括j_username和j_password。
優(yōu)選地,所述服務(wù)器的服務(wù)程序lddsmMainApp對(duì)外提供URL訪問功能。
本發(fā)明能夠解決看門狗定時(shí)器能夠解決的問題,如系統(tǒng)死機(jī),程序跑飛等造成的程序不能正常運(yùn)行的問題,也能解決在程序由于已知原因(如:內(nèi)存泄漏)或未知原因不能正常工作,但程序中的“喂狗”機(jī)制仍在執(zhí)行時(shí),看門狗定時(shí)器無法發(fā)揮作用的情況。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明方法流程示意圖。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明提供一種檢測服務(wù)器是否正常運(yùn)行的方法,所述方法提供一個(gè)判斷模塊、一個(gè)WinHTTP模塊以及一服務(wù)器的服務(wù)程序lddsmMainApp,判斷模塊內(nèi)嵌在Windows服務(wù)中,所述方法包括以下步驟:
S01:判斷模塊每隔一預(yù)設(shè)時(shí)間調(diào)用WinHTTP模塊,WinHTTP模塊訪問服務(wù)器的服務(wù)程序lddsmMainApp,并從服務(wù)器的服務(wù)程序lddsmMainApp獲取返回結(jié)果集,結(jié)果集從所調(diào)用函數(shù)的返回值或所調(diào)用函數(shù)的相關(guān)參數(shù)當(dāng)中獲取;
S02:判斷模塊判斷返回結(jié)果集是否為空,若返回結(jié)果集不為空,則執(zhí)行步驟S03,若返回結(jié)果集為空,則執(zhí)行步驟S04;
S03:判斷模塊獲取返回結(jié)果集中的數(shù)據(jù)集合,并根據(jù)返回結(jié)果集中的數(shù)據(jù)集合是否包含預(yù)設(shè)關(guān)鍵字來確定服務(wù)器是否正常運(yùn)行,若包含預(yù)設(shè)關(guān)鍵字,則說明服務(wù)器正常運(yùn)行并返回執(zhí)行步驟S01,若不包含預(yù)設(shè)關(guān)鍵字,則說明服務(wù)器沒有正常運(yùn)行并執(zhí)行步驟S04;
S04:重啟服務(wù)器的服務(wù)程序lddsmMainApp。
具體的,在本發(fā)明一實(shí)施例中,提供一種檢測服務(wù)器是否正常運(yùn)行的方法,在Windows服務(wù)中內(nèi)嵌判斷模塊,所述Windows服務(wù)在服務(wù)器端保持24小時(shí)不間斷運(yùn)行,所述判斷模塊每隔5分鐘調(diào)用WinHTTP訪問一次服務(wù)器的服務(wù)程序lddsmMainApp,其中調(diào)用方式有多種,具體為直接通過函數(shù)名進(jìn)行調(diào)用,并從服務(wù)器的服務(wù)程序lddsmMainApp獲取返回結(jié)果集,其中,結(jié)果集從所調(diào)用函數(shù)的返回值或所調(diào)用函數(shù)的相關(guān)參數(shù)當(dāng)中獲取,判斷模塊獲取返回結(jié)果集中的數(shù)據(jù)集合,并根據(jù)返回結(jié)果集的中數(shù)據(jù)集合是否包含某些關(guān)鍵字來確定服務(wù)器是否正常運(yùn)行,關(guān)鍵字可以有多種,具體可以是j_username和j_password,若包含j_username和j_password關(guān)鍵字則說明服務(wù)器正常運(yùn)行并持續(xù)監(jiān)控,若不包含j_username和j_password關(guān)鍵字則說明服務(wù)器沒有正常運(yùn)行并重啟服務(wù)器的服務(wù)程序,所述服務(wù)器的服務(wù)程序?qū)ν馓峁︰RL訪問服務(wù)器的功能。WinHTTP的全稱是Microsoft Windows HTTP Services。
需要說明的是,預(yù)設(shè)時(shí)間可以自由定義,只要服務(wù)程序lddsmMainApp能夠在該預(yù)設(shè)時(shí)間內(nèi)啟動(dòng)完成即可。
本發(fā)明區(qū)別于看門狗技術(shù),在看門狗技術(shù)中一般需要重啟整個(gè)系統(tǒng),而本發(fā)明提供的技術(shù)在不需要重啟整個(gè)系統(tǒng)的情況下,只需重啟服務(wù)器中的服務(wù),即可讓無法正常工作的系統(tǒng)恢復(fù)正常流程;而且看門狗技術(shù)一般會(huì)嵌入所監(jiān)控的系統(tǒng)內(nèi)部,本發(fā)明提供的技術(shù)并不嵌入所監(jiān)控系統(tǒng)內(nèi)部,而是以一個(gè)獨(dú)立的部分進(jìn)行運(yùn)行。
上述說明示出并描述了本發(fā)明的優(yōu)選實(shí)施例,如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。