本發(fā)明涉及通信領(lǐng)域的軟件技術(shù),尤其是涉及一種獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的方法及設(shè)備。
背景技術(shù):
隨著通信技術(shù)和互聯(lián)網(wǎng)技術(shù)應(yīng)用不斷的發(fā)展,人們每天基于終端設(shè)備使用各種個人業(yè)務(wù)應(yīng)用,如基于機(jī)頂盒終端的iptv/ott業(yè)務(wù),基于家用存儲設(shè)備的網(wǎng)絡(luò)存儲業(yè)務(wù),以及其他各種智能終端的業(yè)務(wù)應(yīng)用。
人們使用終端設(shè)備以及業(yè)務(wù)的一些最基本信息,如開機(jī)時間、關(guān)機(jī)時間、應(yīng)用使用的開始時間、結(jié)束時間等這些基本信息是終端設(shè)備提供商或應(yīng)用軟件提供商(以下簡稱“設(shè)備系統(tǒng)提供商”)最關(guān)心也是最有價值的信息,比如了解用戶的在線時長,分析用戶使用設(shè)備的時間區(qū)間等。
為了獲取到這些信息,上述設(shè)備系統(tǒng)提供商可以建立一套遠(yuǎn)程管理系統(tǒng)(以下簡稱“管理系統(tǒng)”,即可認(rèn)為是網(wǎng)絡(luò)側(cè)),在用戶使用該設(shè)備的時候可以通過網(wǎng)絡(luò)獲取到這些信息。
對于終端設(shè)備的開機(jī)時間(或使用應(yīng)用的開始時間),通常的做法是當(dāng)終端設(shè)備開機(jī)(或啟動應(yīng)用)時,通過網(wǎng)絡(luò)將開機(jī)時間(或應(yīng)用開始時間)上報到管理系統(tǒng)。
對于終端設(shè)備的關(guān)機(jī)時間(或應(yīng)用的結(jié)束時間),如果在設(shè)備正常關(guān)機(jī)(或應(yīng)用正常退出)情況下,終端設(shè)備(或應(yīng)用)可以在設(shè)備(應(yīng)用)觸發(fā)關(guān)機(jī)(退出)指令和執(zhí)行關(guān)機(jī)(或退出)指令之間通過網(wǎng)絡(luò)將關(guān)機(jī)時間(退出時間)上報到管理系統(tǒng)。但是在終端設(shè)備異常關(guān)機(jī)或應(yīng)用異常退出的情況下(如電源突然被切斷或應(yīng)用死機(jī)),終端設(shè)備(或應(yīng)用)是沒有辦法上報 關(guān)機(jī)時間(或結(jié)束時間)到管理系統(tǒng)。有一種方法可以解決這個問題,就是在網(wǎng)絡(luò)連通的情況讓管理系統(tǒng)通過和終端設(shè)備(或應(yīng)用)的最后一次心跳消息的時間來計算出關(guān)機(jī)時間(結(jié)束時間)。但是如果終端數(shù)量(或用戶數(shù)量)不斷增多達(dá)到百萬級別的時候,因?yàn)樾阅芎托蕟栴},管理系統(tǒng)會不堪負(fù)重。
還有一種情況,當(dāng)終端設(shè)備或應(yīng)用僅在內(nèi)網(wǎng)使用,與管理系統(tǒng)所在的外網(wǎng)網(wǎng)絡(luò)不通的時候,管理系統(tǒng)都無法獲知終端設(shè)備開機(jī)時間、關(guān)機(jī)時間或應(yīng)用的開始時間和結(jié)束時間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是,提供一種獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的方法及系統(tǒng),以解決特定情況下管理系統(tǒng)無法獲取終端設(shè)備開機(jī)時間、關(guān)機(jī)時間的問題。
為了解決上述技術(shù)問題,本發(fā)明公開了一種獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的方法,包括:
終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將本地記錄中的成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè),之后清空本地記錄;
終端設(shè)備獲取本次系統(tǒng)開始時間,并添加至本地記錄中;
終端設(shè)備系統(tǒng)運(yùn)行過程中,終端設(shè)備獲取系統(tǒng)當(dāng)前時間,并將獲取的系統(tǒng)當(dāng)前時間作為本次系統(tǒng)結(jié)束時間添加至本地記錄中,之后,所述終端設(shè)備周期性獲取系統(tǒng)當(dāng)前時間,并用每次獲取的系統(tǒng)當(dāng)前時間更新本地記錄中本次系統(tǒng)結(jié)束時間。
可選地,上述方法還包括:
終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,還將所述終端設(shè)備獲取的本次終端設(shè)備系統(tǒng)開始時間上報給網(wǎng)絡(luò)側(cè)。
可選地,上述方法還包括:
終端設(shè)備系統(tǒng)正常退出時,終端設(shè)備將本地記錄中本次系統(tǒng)結(jié)束時間更新為系統(tǒng)當(dāng)前時間。
可選地,上述方法還包括:
終端設(shè)備系統(tǒng)正常退出時,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將更新后的本次系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè)。
可選地,上述方法中,所述終端設(shè)備將本地記錄中的成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè)指:
將本地記錄中所有的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間成對上報給網(wǎng)絡(luò)側(cè)。
本發(fā)明還公開了一種終端設(shè)備,包括時間上報模塊、時間記錄模塊和存儲模塊,其中:
所述時間上報模塊,在終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將所述存儲模塊中記錄的成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè),之后清空所述存儲模塊中的記錄;
所述時間記錄模塊,在終端設(shè)備系統(tǒng)啟動后,獲取本次系統(tǒng)開始時間,并添加至所述存儲模塊的記錄中,以及在終端設(shè)備系統(tǒng)運(yùn)行過程中,獲取系統(tǒng)當(dāng)前時間,并將獲取的系統(tǒng)當(dāng)前時間作為本次系統(tǒng)結(jié)束時間添加至所述存儲模塊的記錄中,之后,周期性獲取系統(tǒng)當(dāng)前時間,并用每次獲取的系統(tǒng)當(dāng)前時間更新本地記錄中本次系統(tǒng)結(jié)束時間。
可選地,上述設(shè)備中,所述時間上報模塊,在終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,還將所述時間記錄模塊獲取的本次系統(tǒng)開始時間上報給網(wǎng)絡(luò)側(cè)。
可選地,上述設(shè)備中,所述時間記錄模塊,在終端設(shè)備系統(tǒng)正常退出時,將所述存儲模塊的記錄中本次系統(tǒng)結(jié)束時間更新為系統(tǒng)當(dāng)前時間。
可選地,上述設(shè)備中,所述時間上報模塊,在終端設(shè)備系統(tǒng)正常退出時,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將更新后的本次系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè)。
可選地,上述設(shè)備中,所述時間上報模塊,將所述存儲模塊中記錄的成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè)指:
將本地記錄中所有的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間成對上報給網(wǎng)絡(luò)側(cè)。
與現(xiàn)有技術(shù)相比,本申請技術(shù)方案解決了終端設(shè)備系統(tǒng)在終端設(shè)備異常關(guān)機(jī)或應(yīng)用異常中斷以及與外部網(wǎng)絡(luò)不通的情況下,管理系統(tǒng)無法直接獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的問題。通過獲得的這些時間信息,設(shè)備系統(tǒng)提供商能更好的分析出使用者的喜好和習(xí)慣,從而設(shè)計出更好的終端產(chǎn)品。
附圖說明
圖1是本實(shí)施例中終端設(shè)備系統(tǒng)總體結(jié)構(gòu)示意圖;
圖2是本實(shí)施例中時間上報模塊和時間記錄模塊運(yùn)行順序圖;
圖3是本實(shí)施例中時間上報模塊處理流程圖;
圖4是本實(shí)施例中時間記錄模塊處理流程圖;
圖5是本實(shí)施例中網(wǎng)絡(luò)側(cè)處理流程圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文將結(jié)合附圖對本發(fā)明技術(shù)方案作進(jìn)一步詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請的實(shí)施例和實(shí)施例中的特征可以任意相互組合。
實(shí)施例1
本實(shí)施例提供一種獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的方法,主要包括如下操作:
終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將本地記錄中的成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè),之后清空本地記錄;
終端設(shè)備獲取系統(tǒng)當(dāng)前時間作為本次系統(tǒng)開始時間,并添加至本地記錄中;
終端設(shè)備系統(tǒng)運(yùn)行過程中,終端設(shè)備獲取系統(tǒng)當(dāng)前時間,并將獲取的系 統(tǒng)當(dāng)前時間作為本次系統(tǒng)結(jié)束時間添加至本地記錄中,之后,終端設(shè)備周期性獲取系統(tǒng)當(dāng)前時間,并用每次獲取的系統(tǒng)當(dāng)前時間更新本地記錄中本次系統(tǒng)結(jié)束時間。
要說明的是,若終端設(shè)備系統(tǒng)正常退出,則此時,終端設(shè)備直接將終端設(shè)備系統(tǒng)當(dāng)前時間作為終端設(shè)備的實(shí)際結(jié)束時間,即將本地記錄中本次系統(tǒng)結(jié)束時間更新為系統(tǒng)當(dāng)前時間。
相應(yīng)地,終端設(shè)備系統(tǒng)正常退出時,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,還需要將更新存儲的終端設(shè)備系統(tǒng)結(jié)束時間(即上述終終端設(shè)備的實(shí)際結(jié)束時間)上報給網(wǎng)絡(luò)側(cè)。
另外,終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,還可以將本次系統(tǒng)開始時間上報給網(wǎng)絡(luò)側(cè)。
上述方法中,所涉及的終端設(shè)備系統(tǒng)可以是專用終端設(shè)備,如機(jī)頂盒,存儲設(shè)備,網(wǎng)絡(luò)攝像頭等,也可以是終端設(shè)備上的應(yīng)用軟件,如視頻軟件、游戲軟件等。本實(shí)施例對此不作具體限制。
終端設(shè)備系統(tǒng)開始時間和結(jié)束時間,可以是專用終端設(shè)備的開機(jī)時間和關(guān)機(jī)時間,也可以是終端設(shè)備上的應(yīng)用軟件的啟動時間和退出時間。
還要說明的是,終端設(shè)備按照上述方法獲取到系統(tǒng)開始時間和結(jié)束時間。并上報到網(wǎng)絡(luò)側(cè)后,還可以包括網(wǎng)絡(luò)側(cè)操作,網(wǎng)絡(luò)側(cè)主要包括有填充和過濾操作。例如,終端設(shè)備在開機(jī)的時候,網(wǎng)絡(luò)對外是通的,此時,終端設(shè)備在開機(jī)時即將開機(jī)時間上報給網(wǎng)絡(luò)側(cè),網(wǎng)絡(luò)側(cè)將該終端設(shè)備的開機(jī)時間記錄為上報的開機(jī)時間,而對應(yīng)的關(guān)機(jī)時間則記錄為空。
如果用戶使用終端設(shè)備一段時間之后,然后關(guān)機(jī),此時有兩種情況:
1)如果關(guān)機(jī)時對外網(wǎng)絡(luò)還是通的,終端設(shè)備除了將本次系統(tǒng)結(jié)束時間存儲在本地記錄中以外,還將該系統(tǒng)結(jié)束時間上報到網(wǎng)絡(luò)側(cè),此時,網(wǎng)絡(luò)側(cè)需要進(jìn)行填充操作,即網(wǎng)絡(luò)側(cè)將這個系統(tǒng)結(jié)束時間填充到本次開機(jī)時間對應(yīng)的記錄為空的關(guān)機(jī)時間。
2)如果關(guān)機(jī)時網(wǎng)絡(luò)不通,終端設(shè)備則將本次的系統(tǒng)結(jié)束時間存儲在本地記錄中。這樣,網(wǎng)絡(luò)側(cè)上保存了一個只有系統(tǒng)開始時間沒有系統(tǒng)結(jié)束時間的 記錄,終端設(shè)備上保存了有相同的系統(tǒng)開始時間和對應(yīng)的系統(tǒng)結(jié)束時間的記錄。如果在下一次開機(jī)的時候,終端設(shè)備將本地記錄的系統(tǒng)開始時間和對應(yīng)的系統(tǒng)結(jié)束時間一起上報給網(wǎng)絡(luò)側(cè),此時網(wǎng)絡(luò)側(cè)需要進(jìn)行過濾操作,即網(wǎng)絡(luò)側(cè)已經(jīng)有了上次的系統(tǒng)開始時間,那網(wǎng)絡(luò)側(cè)將已經(jīng)存在系統(tǒng)開始時間相同的記錄(系統(tǒng)結(jié)束時間為空)過濾刪除,然后將所收到的完整的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間成對記錄下來。
上述網(wǎng)絡(luò)側(cè)的具體操作也可以采取其他方式,只要將終端設(shè)備的開機(jī)時間和關(guān)機(jī)時間進(jìn)行成對記錄即可,本實(shí)施例對此不作限制。
還要說明的是,終端設(shè)備系統(tǒng)啟動后,終端設(shè)備與網(wǎng)絡(luò)側(cè)之間存在無法通信的情況,此時,終端設(shè)備無法將本地記錄中的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè),則需要等待終端設(shè)備系統(tǒng)再次啟動,且終端設(shè)備與網(wǎng)絡(luò)側(cè)之間通信正常時,才能上報給網(wǎng)絡(luò)側(cè),這樣,本地記錄中就存儲有多對系統(tǒng)開始時間和系統(tǒng)結(jié)束時間。當(dāng)系統(tǒng)再次啟動后,終端設(shè)備與網(wǎng)絡(luò)側(cè)之間通信正常時,需要將本地記錄中所有系統(tǒng)開始時間和系統(tǒng)結(jié)束時間成對上報給網(wǎng)絡(luò)側(cè)即可。
實(shí)施例2
本實(shí)施例提供一種獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的設(shè)備,主要包括如下各模塊。
存儲模塊,成對存儲終端設(shè)備的系統(tǒng)開始時間和結(jié)束時間;
其中,存儲模塊可以通過一個文件,或者一個表,來存儲終端設(shè)備的系統(tǒng)的使用時間的記錄,每條記錄至少包含系統(tǒng)開始時間和系統(tǒng)結(jié)束時間兩個信息。
時間上報模塊,在終端設(shè)備開機(jī)或終端設(shè)備系統(tǒng)啟動時,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,則將存儲模塊中記錄的所有成對的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè),之后清空存儲模塊中的所有記錄。
時間記錄模塊,在終端設(shè)備系統(tǒng)啟動后,獲取系統(tǒng)當(dāng)前時間作為當(dāng)前系統(tǒng)開始時間,并添加至存儲模塊的記錄中,以及在終端設(shè)備系統(tǒng)運(yùn)行過程中, 獲取系統(tǒng)當(dāng)前時間,并將獲取的系統(tǒng)當(dāng)前時間作為系統(tǒng)結(jié)束時間添加至存儲模塊的記錄中,之后,周期性獲取系統(tǒng)當(dāng)前時間,并用每次獲取的系統(tǒng)當(dāng)前時間更新本地記錄中本次系統(tǒng)結(jié)束時間。
其中,本實(shí)施例更新本地記錄中本次系統(tǒng)結(jié)束時間時,采用覆蓋方式進(jìn)行更新,即每次獲取系統(tǒng)當(dāng)前時間后,將此系統(tǒng)當(dāng)前時間作為本次系統(tǒng)結(jié)束時間,直接覆蓋本地記錄中所記錄的本次系統(tǒng)結(jié)束時間。
另外,時間上報模塊,在終端設(shè)備系統(tǒng)啟動后,若本終端設(shè)備與網(wǎng)絡(luò)側(cè)正常通信,還將終端設(shè)備的本次系統(tǒng)開始時間上報給網(wǎng)絡(luò)側(cè)。
在終端設(shè)備系統(tǒng)正常退出時,時間記錄模塊將存儲模塊中終端設(shè)備系統(tǒng)結(jié)束時間更新為系統(tǒng)當(dāng)前時間。若此時,本終端設(shè)備與網(wǎng)絡(luò)側(cè)還保持正常通信,則時間上報模塊還可以將存儲模塊中更新后的本次系統(tǒng)結(jié)束時間上報給網(wǎng)絡(luò)側(cè)。
下面介紹上述設(shè)備的具體工作過程。
第一步:系統(tǒng)啟動后,時間上報模塊先行檢測和時間獲取模塊是否網(wǎng)絡(luò)通達(dá),如果網(wǎng)絡(luò)通達(dá),則將存儲模塊里包含的終端設(shè)備的系統(tǒng)開始時間和結(jié)束時間的全部上報到網(wǎng)絡(luò)側(cè),同時,獲取終端設(shè)備系統(tǒng)當(dāng)前時間作為當(dāng)前系統(tǒng)開始時間上報給網(wǎng)絡(luò)側(cè),然后,清空存儲模塊中所有時間記錄即可。
第二步:時間記錄模塊記錄終端設(shè)備系統(tǒng)本次的系統(tǒng)開始時間,并用開始時間初始化本次的系統(tǒng)結(jié)束時間,作為一條新記錄增加到存儲模塊。
第三步:系統(tǒng)正常運(yùn)行后,時間記錄模塊周期性的獲取終端設(shè)備系統(tǒng)當(dāng)前時間作為終端設(shè)備系統(tǒng)結(jié)束時間寫入存儲模塊。
寫入的時間周期可以設(shè)定,周期越短,最后寫入的時間越接近與終端設(shè)備系統(tǒng)實(shí)際的結(jié)束時間。
第四步:系統(tǒng)退出后,如果是正常退出,時間記錄模塊獲取系統(tǒng)當(dāng)前時間作為系統(tǒng)實(shí)際結(jié)束時間寫入存儲模塊(即將終端設(shè)備系統(tǒng)結(jié)束時間更新為系統(tǒng)當(dāng)前時間),此時如果時間上報模塊和網(wǎng)絡(luò)側(cè)路由通達(dá),則時間上報模塊將該系統(tǒng)當(dāng)前時間作為終端設(shè)備系統(tǒng)實(shí)際結(jié)束時間上報給網(wǎng)絡(luò)側(cè);如果是 異常退出,則時間記錄模塊最后一次寫入到存儲模塊的系統(tǒng)當(dāng)前時間作為終端設(shè)備本次的系統(tǒng)結(jié)束時間(待下一次開機(jī)或啟動上報)。
第五步:網(wǎng)絡(luò)側(cè)接收到時間上報模塊上報的時間記錄,按照系統(tǒng)開始時間的先后順序?qū)r間記錄進(jìn)行填充和重復(fù)過濾處理,獲取到終端設(shè)備系統(tǒng)使用的完整的開始時間和結(jié)束時間。
下面結(jié)合附圖并基本按照附圖的順序?qū)夹g(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
上述獲取終端設(shè)備系統(tǒng)開始時間和結(jié)束時間的設(shè)備可以是終端設(shè)備,此時,設(shè)備總體結(jié)構(gòu)如圖1所示。
終端設(shè)備系統(tǒng)可以是專用終端設(shè)備,如機(jī)頂盒,存儲設(shè)備,網(wǎng)絡(luò)攝像頭等,也可以是終端設(shè)備上的應(yīng)用軟件,如視頻軟件、游戲軟件等。1個或n個終端設(shè)備系統(tǒng)通過網(wǎng)絡(luò)能夠連入到遠(yuǎn)程的管理系統(tǒng)(即為網(wǎng)絡(luò)側(cè))。
終端設(shè)備內(nèi)置三個組件:時間記錄模塊,存儲模塊,時間上報模塊。
圖2是上述時間上報模塊和時間記錄模塊運(yùn)行示意圖。
終端設(shè)備系統(tǒng)啟動時,時間上報模塊隨終端設(shè)備系統(tǒng)主程序啟動后先行自動運(yùn)行,確保在網(wǎng)絡(luò)連通的情況下,時間上報模塊能將存儲模塊記錄的所有的系統(tǒng)開始時間和系統(tǒng)結(jié)束時間成對全部上報到網(wǎng)絡(luò)側(cè),然后再運(yùn)行時間記錄模塊,在空的存儲模塊里記錄新的開始運(yùn)行時間。
時間上報模塊內(nèi)中需要定義一個開始時間的全局時間變量(假設(shè)為st),用來保存本次終端設(shè)備系統(tǒng)的開始運(yùn)行時間,另外,時間記錄模塊內(nèi)需要定義一個結(jié)束時間的全局時間變量(假設(shè)為et),用來保存終端設(shè)備系統(tǒng)的結(jié)束運(yùn)行時間。
終端設(shè)備系統(tǒng)正常結(jié)束時,先要結(jié)束時間記錄模塊的運(yùn)行,再結(jié)束時間上報模塊的運(yùn)行。
圖3是上述時間上報模塊處理流程圖。
終端設(shè)備系統(tǒng)運(yùn)行后,時間上報模塊隨終端設(shè)備系統(tǒng)主程序啟動后自動運(yùn)行,它同時啟動兩個并行處理流程1和處理流程2。
啟動處理流程1。處理流程1首先檢測與網(wǎng)絡(luò)側(cè)是否路由互通,如果是,則打開存儲模塊,檢索出里面所有的記錄,這些記錄是由系統(tǒng)開始時間和系統(tǒng)結(jié)束時間配對組成的記錄,然后將這些時間記錄上報到網(wǎng)絡(luò)側(cè)。
通常,在終端設(shè)備系統(tǒng)第一次啟動時,該存儲模塊的記錄為空。在第一次運(yùn)行后,該存儲模塊至少包含一條記錄,表示上一次的使用時間記錄。如果包含多條記錄,表示該終端設(shè)備系統(tǒng)有多次使用的時間記錄尚未上報。
存儲模塊中所有記錄全部上傳到網(wǎng)絡(luò)側(cè)后,要將存儲部件的所有記錄清除,以確保后面記錄的時間記錄都是尚未上傳的記錄。然后,獲取系統(tǒng)當(dāng)前時間,將該時間賦給終端設(shè)備系統(tǒng)記錄系統(tǒng)開始時間的全局變量(st),并把該當(dāng)前時間上報給網(wǎng)絡(luò)側(cè),作為終端設(shè)備系統(tǒng)本次的開始時間,然后,啟動時間記錄模塊,啟動處理流程1結(jié)束。
如果處理流程1檢測與網(wǎng)絡(luò)側(cè)由不通,則直接啟動時間記錄模塊,啟動處理流程1結(jié)束。
啟動處理流程2,處理流程2一直監(jiān)聽時間記錄模塊狀態(tài),如果監(jiān)聽到時間記錄模塊退出的消息,表示終端設(shè)備系統(tǒng)已經(jīng)發(fā)出了正常退出的指令,則處理流程2檢測與網(wǎng)絡(luò)側(cè)路由是否通達(dá),如果是,則將記錄終端設(shè)備系統(tǒng)結(jié)束時間的全局變量(et)上報給網(wǎng)絡(luò)側(cè)(該時間變量et值在此前已經(jīng)由時間記錄模塊賦值),然后,結(jié)束時間上報模塊運(yùn)行。
如果處理流程2檢測與網(wǎng)絡(luò)側(cè)路由不通達(dá),則直接結(jié)束時間上報模塊運(yùn)行,本次終端設(shè)備系統(tǒng)結(jié)束時間在下次終端設(shè)備系統(tǒng)啟動后由啟動處理流程1從存儲模塊讀取上報。
圖4是時間記錄模塊處理流程圖。
終端設(shè)備開機(jī)后,時間記錄模塊隨時間上報模塊處理流程1結(jié)束后啟動運(yùn)行,它同時啟動兩個并行處理流程3和處理流程4。
啟動處理流程3,時間記錄模塊讀取預(yù)先定義好的時間周期參數(shù)(假設(shè)為pt),該參數(shù)定義時間記錄模塊每隔多久采集一次終端設(shè)備系統(tǒng)當(dāng)前時間。
然后,時間記錄模塊打開存儲模塊,在存儲模塊內(nèi)增加一行記錄(假設(shè)為r1),用來記錄本次終端設(shè)備的開始時間和結(jié)束時間,并用此前在時間上 報模塊里記錄的系統(tǒng)開始時間全局變量(st)值給該記錄的開始時間信息賦值,同時,還用st值作為初始時間給該記錄的結(jié)束時間賦值,然后,保存該存儲模塊記錄,然后,時間記錄模塊進(jìn)入休眠計時狀態(tài)。
時間記錄模塊經(jīng)過休眠定義好的(pt)時間后,打開此前保存的存儲部件記錄r1,用終端設(shè)備系統(tǒng)的當(dāng)前時間更新r1記錄的結(jié)束時間,然后保存存儲模塊記錄r1,然后繼續(xù)休眠等待,重復(fù)該過程。
只要終端設(shè)備系統(tǒng)沒有退出,一直用終端設(shè)備系統(tǒng)的當(dāng)前時間更新r1記錄的結(jié)束時間。
啟動處理流程4,對終端設(shè)備系統(tǒng)正常退出消息進(jìn)行監(jiān)聽,如果監(jiān)聽到終端設(shè)備系統(tǒng)正常退出的消息,則強(qiáng)制結(jié)束處理流程3,并獲取系統(tǒng)當(dāng)前時間,保存到記錄系統(tǒng)結(jié)束時間的全局變量(et)中,作為終端設(shè)備系統(tǒng)本次的結(jié)束時間,然后打開存儲模塊記錄r1,用et時間更新r1記錄的結(jié)束時間,保存記錄,然后時間記錄運(yùn)行模塊的結(jié)束運(yùn)行。
當(dāng)休眠的pt時間足夠小,則更新當(dāng)前時間的頻率越快,當(dāng)終端設(shè)備系統(tǒng)異常退出時,時間記錄模塊記錄的最后一次當(dāng)前時間也就越接近實(shí)際的結(jié)束時間。
可以根據(jù)實(shí)際的需要,設(shè)置不同的pt周期。
圖5是網(wǎng)絡(luò)側(cè)的處理流程圖。
網(wǎng)絡(luò)側(cè)一直監(jiān)聽是否有時間上報模塊上報的時間消息,如果監(jiān)聽到有時間消息上報,則判斷是開始時間消息還是結(jié)束時間消息。
如果是開始時間消息,則首先檢查上報的消息里是否含有成對的歷史時間記錄,這些記錄為過去已經(jīng)發(fā)生但尚未上報到管理系統(tǒng)的記錄,如果有這些記錄,則要對這些成對的記錄進(jìn)行處理,尤其的是,刪除已經(jīng)在網(wǎng)絡(luò)側(cè)本地存在的完全相同(開始時間和結(jié)束時間均相同)的使用時間記錄,按照開始時間相同的規(guī)則替換管理系統(tǒng)內(nèi)只有開始時間而沒有結(jié)束時間的記錄,填補(bǔ)空缺的結(jié)束時間。然后,接收本次終端設(shè)備系統(tǒng)的開始時間(結(jié)束時間為空),最后保存入庫,然后繼續(xù)監(jiān)聽。
如果是結(jié)束時間消息,則接收本次終端設(shè)備系統(tǒng)的結(jié)束時間,并檢查網(wǎng) 絡(luò)側(cè)本地是否存在只有開始時間沒有結(jié)束時間的時間記錄,如果有這樣的記錄,說明該開始時間和剛接收的結(jié)束時間是實(shí)際對應(yīng)的一組開始時間和結(jié)束時間,則把本次接收的結(jié)束時間填充到該記錄空缺的結(jié)束時間處,完成一對完整的使用時間的配對,并將該配對后的記錄入庫保存。如果沒有這樣的記錄,說明該結(jié)束時間找不到其對應(yīng)的開始時間,則將本次結(jié)束時間消息丟棄。
網(wǎng)絡(luò)側(cè)獲取到的使用終端設(shè)備系統(tǒng)的開始時間和結(jié)束時間信息,可以完整的將終端設(shè)備系統(tǒng)的使用時間情況完整的呈現(xiàn)出來。
從上述實(shí)施例可以看出,本申請技術(shù)方案以簡單的方案解決管理系統(tǒng)在終端設(shè)備異常關(guān)機(jī)或應(yīng)用異常中斷以及與外部網(wǎng)絡(luò)不通的情況下無法有效獲取終端設(shè)備開關(guān)機(jī)時間或應(yīng)用開始結(jié)束時間的問題,克服了現(xiàn)有技術(shù)存在的管理服務(wù)器負(fù)擔(dān)過重的問題或需要依賴外部網(wǎng)絡(luò)的缺陷。
本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個或多個集成電路來實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本申請不限制于任何特定形式的硬件和軟件的結(jié)合。
以上所述,僅為本發(fā)明的較佳實(shí)例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。