欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

腳本的可持續(xù)運行方法及系統(tǒng)的制作方法

文檔序號:8412401閱讀:376來源:國知局
腳本的可持續(xù)運行方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于軟件技術(shù)領(lǐng)域,具體涉及一種可以令網(wǎng)頁腳本持續(xù)運行的方法和系統(tǒng)。
【背景技術(shù)】
[0002]腳本語言是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運行過程而創(chuàng)建的計算機編程語言,應(yīng)用于計算機系統(tǒng)的各個層次,尤其在網(wǎng)頁開發(fā)領(lǐng)域得到了廣泛運用。目前,網(wǎng)絡(luò)應(yīng)用越來越豐富,網(wǎng)頁的使用和視覺效果離不開網(wǎng)頁中內(nèi)嵌的腳本。常用的腳本語言有JavaScript、ASP、PHP>python、per1、ruby 等。
[0003]以PHP語言為例,網(wǎng)站架構(gòu)中,通常會使用PHP編寫一段腳本程序后,令其定時在后臺運行,俗稱定時腳本、定時任務(wù)。定時任務(wù)常用來執(zhí)行定期的任務(wù),例如每天凌晨零點清理日志、每天早上八點發(fā)送前一日的報告。有一類定時任務(wù)是希望連續(xù)不間斷運行的,比如短信發(fā)送狀態(tài)更新、電子傳真發(fā)送狀態(tài)更新、支付狀態(tài)更新。以支付狀態(tài)為例,客人發(fā)起支付任務(wù)進入第三方支付平臺后,就需要開啟一個定時任務(wù)檢查支付狀態(tài),從而盡可能在支付成功的最短時間內(nèi)更新狀態(tài)。但現(xiàn)有的定時腳本執(zhí)行方法存在腳本單次執(zhí)行時間過長,無法達(dá)到秒級響應(yīng),需要人工干預(yù)、維護成本高等諸多問題。

【發(fā)明內(nèi)容】

[0004]為解決上述問題,本發(fā)明公開了一種腳本的可持續(xù)運行方法和能夠?qū)崿F(xiàn)該方法的運行系統(tǒng),避免腳本并發(fā),執(zhí)行時間短,能夠達(dá)到秒級響應(yīng),降低了維護成本。
[0005]為了達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:
腳本的可持續(xù)運行方法,包括如下步驟:
步驟A,采用定時啟動器周期性啟動腳本;
步驟B,通過鎖文件防止并發(fā)情況產(chǎn)生:
步驟B-1,檢查鎖文件是否存在,當(dāng)不存在鎖文件時,創(chuàng)建鎖文件并執(zhí)行步驟C ;當(dāng)存在鎖文件時,執(zhí)行步驟B-2 ;
步驟B-2,定期重新檢查鎖文件是否存在,如果在等待允許時間內(nèi)原有存在的鎖文件被刪除則創(chuàng)建新的鎖文件,并執(zhí)行步驟C ;如果在等待允許時間內(nèi)原有存在的鎖文件依然存在則執(zhí)行步驟B-3 ;
步驟B-3,檢查鎖文件從創(chuàng)建到當(dāng)前的時間是否超過規(guī)定時間,如果超過規(guī)定時間,則刪除原有存在的鎖文件并創(chuàng)建新的鎖文件;如果不超過規(guī)定時間,則結(jié)束腳本運行;
步驟C,在整個PHP腳本單次最大可執(zhí)行時間內(nèi)循環(huán)執(zhí)行業(yè)務(wù)邏輯,并根據(jù)單次業(yè)務(wù)邏輯的實際執(zhí)行時長、業(yè)務(wù)邏輯單次可以執(zhí)行的時間和腳本的總執(zhí)行時長管理業(yè)務(wù)邏輯的執(zhí)行次數(shù);
步驟D,刪除鎖文件。
[0006]進一步的,所述步驟C包括如下步驟: 步驟C-1,執(zhí)行業(yè)務(wù)邏輯回調(diào)函數(shù);
步驟C-2,計算出業(yè)務(wù)邏輯的執(zhí)行時長,
步驟C-3,計算腳本剩余執(zhí)行時長,當(dāng)剩余執(zhí)行時長足夠執(zhí)行下一次業(yè)務(wù)邏輯時執(zhí)行步驟C-4,否則結(jié)束執(zhí)行;
步驟C-4,當(dāng)業(yè)務(wù)邏輯實際執(zhí)行一次的時間小于業(yè)務(wù)邏輯單次可以執(zhí)行的時間時,執(zhí)行步驟C-5,否則執(zhí)行步驟C-1 ;
步驟C-5,停頓一段時間,直至本次執(zhí)行時長等于業(yè)務(wù)邏輯單次可以執(zhí)行的時間后執(zhí)行
C-1。
[0007]進一步的,所述業(yè)務(wù)邏輯單次可以執(zhí)行的時間=整個PHP腳本單次最大可執(zhí)行時間t/PHP腳本一個生命周期內(nèi)業(yè)務(wù)邏輯的回調(diào)次數(shù)n,所述t和η預(yù)先配置并在步驟A執(zhí)行腳本后加載。
[0008]進一步的,所述腳本的總執(zhí)行時長與腳本的定時啟動周期相等。
[0009]本發(fā)明還提供了能夠?qū)崿F(xiàn)上述腳本可持續(xù)運行方法的運行系統(tǒng),包括定時啟動器、配置模塊、并發(fā)控制模塊、執(zhí)行時間控制模塊;其中定時啟動器能夠周期性啟動腳本,配置模塊用于配置整個PHP腳本單次最大可執(zhí)行時間和PHP腳本一個生命周期內(nèi)業(yè)務(wù)邏輯的回調(diào)次數(shù);并發(fā)控制模塊通過檢查、創(chuàng)建或刪除鎖文件防止并發(fā)情況產(chǎn)生;執(zhí)行時間控制模塊用于在整個PHP腳本單次最大可執(zhí)行時間內(nèi)循環(huán)執(zhí)行業(yè)務(wù)邏輯,并根據(jù)單次業(yè)務(wù)邏輯的實際執(zhí)行時長、業(yè)務(wù)邏輯單次可以執(zhí)行的時間和腳本的總執(zhí)行時長管理業(yè)務(wù)邏輯的執(zhí)行次數(shù)。
[0010]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點和有益效果:
1.能夠?qū)崿F(xiàn)腳本的周期性重復(fù)運行,腳本能夠定期自動重啟和結(jié)束,從而能夠?qū)崿F(xiàn)代碼的動態(tài)部署,無需人工干預(yù),降低維護成本。
[0011]2.對腳本的執(zhí)行時間進行精確管理,時間精度高,可以達(dá)到秒級以下。
[0012]3.消除了 PHP腳本并發(fā),避免了并發(fā)帶來的資源爭搶、結(jié)果不可預(yù)見性。
[0013]4.降低系統(tǒng)復(fù)雜度,避免了 PHP代碼長期運行帶來的內(nèi)存泄露、資源死鎖等問題,發(fā)揮了 PHP語言的長處。
【附圖說明】
[0014]圖1為本發(fā)明提供的腳本的可持續(xù)運行方法步驟流程圖;
圖2為步驟B控制流程圖;
圖3為步驟C控制流程圖。
【具體實施方式】
[0015]以下將結(jié)合具體實施例對本發(fā)明提供的技術(shù)方案進行詳細(xì)說明,應(yīng)理解下述【具體實施方式】僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。
[0016]本發(fā)明提供了一種腳本的可持續(xù)運行方法和與之相應(yīng)的系統(tǒng),能夠?qū)崿F(xiàn)腳本的循環(huán)持續(xù)運行,并克服了現(xiàn)有技術(shù)中的種種缺陷,以下將以PHP腳本為例,進行詳細(xì)闡述。運行系統(tǒng)主要包括以下四個模塊:定時啟動器、配置模塊、并發(fā)控制模塊、執(zhí)行時間控制模塊,定時啟動器用于定時啟動腳本,配置模塊用于配置相關(guān)參數(shù),并發(fā)控制模塊用于創(chuàng)建和刪除鎖文件,并通過對鎖文件的檢查來防止同一腳本并發(fā)執(zhí)行,執(zhí)行時間控制模塊用于循環(huán)執(zhí)行業(yè)務(wù)邏輯并管理業(yè)務(wù)邏輯的執(zhí)行頻率。本發(fā)明提供的方法流程如圖1所示,包括如下步驟:
步驟A,采用定時啟動器周期性啟動腳本。我們可以使用操作系統(tǒng)的定時器,如Iinux的crontab,這樣能夠周期性啟動PHP腳本,例如:我們在crontab中設(shè)置PHP腳本的啟動頻率,每分鐘啟動I次。定時重啟腳本令PHP代碼不再需要長時間執(zhí)行,當(dāng)我們設(shè)置每分鐘重啟一次時,一個PHP腳本的執(zhí)行時間只要達(dá)到一分鐘即可,不需要成年累月的跑下去。此夕卜,由于腳本每分鐘自動重啟一次,而PHP的代碼是可以隨時更新的,新代碼發(fā)布后,不需要人工重啟PHP進程,到下一次啟動PHP腳本時,就會執(zhí)行新部署的代碼,達(dá)到了 “在腳本執(zhí)行過程中升級軟件,而不用重啟系統(tǒng)”的效果。
[0017]在執(zhí)行腳本時,還需要進行并發(fā)控制和時間控制,這就需要先配置兩個關(guān)鍵的參數(shù)-整個PHP腳本單次最大可執(zhí)行時間t (默認(rèn)I分鐘)、PHP腳本一個生命周期內(nèi)業(yè)務(wù)邏輯的回調(diào)次數(shù)η (通常不超過60次)以及業(yè)務(wù)邏輯的回調(diào)函數(shù)。同時,本發(fā)明要求業(yè)務(wù)邏輯的回調(diào)函數(shù)執(zhí)行時間小于t/n。上述這些參數(shù)和回調(diào)函數(shù)均在配置模塊中進行配置,在啟動腳本后即載入配置。
[0018]步驟B,執(zhí)行并發(fā)控制模塊,通過檢查、創(chuàng)建或刪除鎖文件防止并發(fā)情況產(chǎn)生。本步驟控制流程如圖2所示,主要步驟為:
生成鎖文件的名稱,檢查鎖文件是否存在,當(dāng)不存在鎖文件時,創(chuàng)建鎖文件并執(zhí)行后續(xù)步驟;當(dāng)存在鎖文件時,還要定期重新檢查鎖文件是否存在,如果在等待允許時間內(nèi),原有存在的鎖文件被刪除則創(chuàng)建新的鎖文件,并執(zhí)行后續(xù)步驟;如果在等待允許時間內(nèi),原有存在的鎖文件依然存在則檢查鎖文件從創(chuàng)建到當(dāng)前的時間是否超過規(guī)定時間,如果超過規(guī)定時間,則刪除原有存在的鎖文件并創(chuàng)建新的鎖文件;如果不超過規(guī)定時間,則結(jié)束腳本運行。
[0019]本例將等待允許時間設(shè)為t/3,定期重新檢查鎖文件的時間定為每秒檢查一次,規(guī)定時間設(shè)為3t,結(jié)合到腳本執(zhí)行時可能存在的種種問題,列舉在步驟B中可能存在的幾種情況:
正常場景:腳本啟動后,檢查到不存在鎖文件,這時創(chuàng)建鎖文件,并執(zhí)行后續(xù)邏輯(步驟C),執(zhí)行完后刪除鎖文件,結(jié)束腳本執(zhí)行。
[0020]等待場景:腳本啟動后,檢查到存在鎖文件,每秒鐘重新檢查一次;在t/3 (三分之一 t)時間內(nèi),舊的鎖文件被創(chuàng)建鎖文件的腳本刪除,此時創(chuàng)建新的鎖文件,并執(zhí)行后續(xù)邏輯,執(zhí)行完后刪除鎖文件,結(jié)束腳本執(zhí)行。這種情形是最后一個創(chuàng)建鎖的腳本中最后一次執(zhí)行業(yè)務(wù)邏輯的耗時遠(yuǎn)超倒數(shù)第二次執(zhí)行耗時才會出現(xiàn)的。我們希望上一次腳本盡快結(jié)束執(zhí)行所以在等待上一腳本結(jié)束;但如果上一個腳本長時間不結(jié)束那么本次啟動后的等待無疑是
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
香河县| 邢台县| 孙吴县| 二连浩特市| 上犹县| 诏安县| 濉溪县| 元朗区| 丁青县| 右玉县| 涞源县| 江北区| 桑植县| 兴业县| 怀集县| 浮山县| 金秀| 米脂县| 武冈市| 布拖县| 吕梁市| 临桂县| 安丘市| 芒康县| 通道| 鹤岗市| 甘南县| 沭阳县| 邯郸市| 米林县| 疏附县| 资中县| 阳西县| 绥棱县| 石嘴山市| 巴东县| 宿州市| 安化县| 安义县| 弥勒县| 万载县|