脚本的可持续运行方法及系统技术方案

技术编号:11640770 阅读:112 留言:0更新日期:2015-06-24 17:21
本发明专利技术公开了一种脚本的可持续运行方法和能够实现该方法的运行系统,方法包括:定时启动脚本;载入配置;检查并发情况;在许可的时间内循环执行业务逻辑;系统包括定时启动器、配置模块、并发控制模块、执行时间控制模块。避免脚本并发,执行时间短,能够达到秒级响应,降低了维护成本。本发明专利技术能够实现脚本的周期性重复运行,脚本能够定期自动重启和结束,从而能够实现代码的动态部署,无需人工干预,降低维护成本;并能够对脚本的执行时间进行精确管理,时间精度高,可以达到秒级以下。

【技术实现步骤摘要】

本专利技术属于软件
,具体涉及一种可以令网页脚本持续运行的方法和系统。
技术介绍
脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,应用于计算机系统的各个层次,尤其在网页开发领域得到了广泛运用。目前,网络应用越来越丰富,网页的使用和视觉效果离不开网页中内嵌的脚本。常用的脚本语言有JavaScript、ASP、PHP>python、per1、ruby 等。以PHP语言为例,网站架构中,通常会使用PHP编写一段脚本程序后,令其定时在后台运行,俗称定时脚本、定时任务。定时任务常用来执行定期的任务,例如每天凌晨零点清理日志、每天早上八点发送前一日的报告。有一类定时任务是希望连续不间断运行的,比如短信发送状态更新、电子传真发送状态更新、支付状态更新。以支付状态为例,客人发起支付任务进入第三方支付平台后,就需要开启一个定时任务检查支付状态,从而尽可能在支付成功的最短时间内更新状态。但现有的定时脚本执行方法存在脚本单次执行时间过长,无法达到秒级响应,需要人工干预、维护成本高等诸多问题。
技术实现思路
为解决上述问题,本专利技术公开了一种脚本的可持续运行方法和能够实现该方法的运行系统,避免脚本并发,执行时间短,能够达到秒级响应,降低了维护成本。为了达到上述目的,本专利技术提供如下技术方案: 脚本的可持续运行方法,包括如下步骤: 步骤A,采用定时启动器周期性启动脚本; 步骤B,通过锁文件防止并发情况产生: 步骤B-1,检查锁文件是否存在,当不存在锁文件时,创建锁文件并执行步骤C ;当存在锁文件时,执行步骤B-2 ; 步骤B-2,定期重新检查锁文件是否存在,如果在等待允许时间内原有存在的锁文件被删除则创建新的锁文件,并执行步骤C ;如果在等待允许时间内原有存在的锁文件依然存在则执行步骤B-3 ; 步骤B-3,检查锁文件从创建到当前的时间是否超过规定时间,如果超过规定时间,则删除原有存在的锁文件并创建新的锁文件;如果不超过规定时间,则结束脚本运行; 步骤C,在整个PHP脚本单次最大可执行时间内循环执行业务逻辑,并根据单次业务逻辑的实际执行时长、业务逻辑单次可以执行的时间和脚本的总执行时长管理业务逻辑的执行次数; 步骤D,删除锁文件。进一步的,所述步骤C包括如下步骤: 步骤C-1,执行业务逻辑回调函数; 步骤C-2,计算出业务逻辑的执行时长, 步骤C-3,计算脚本剩余执行时长,当剩余执行时长足够执行下一次业务逻辑时执行步骤C-4,否则结束执行; 步骤C-4,当业务逻辑实际执行一次的时间小于业务逻辑单次可以执行的时间时,执行步骤C-5,否则执行步骤C-1 ; 步骤C-5,停顿一段时间,直至本次执行时长等于业务逻辑单次可以执行的时间后执行C-1。进一步的,所述业务逻辑单次可以执行的时间=整个PHP脚本单次最大可执行时间t/PHP脚本一个生命周期内业务逻辑的回调次数n,所述t和η预先配置并在步骤A执行脚本后加载。进一步的,所述脚本的总执行时长与脚本的定时启动周期相等。本专利技术还提供了能够实现上述脚本可持续运行方法的运行系统,包括定时启动器、配置模块、并发控制模块、执行时间控制模块;其中定时启动器能够周期性启动脚本,配置模块用于配置整个PHP脚本单次最大可执行时间和PHP脚本一个生命周期内业务逻辑的回调次数;并发控制模块通过检查、创建或删除锁文件防止并发情况产生;执行时间控制模块用于在整个PHP脚本单次最大可执行时间内循环执行业务逻辑,并根据单次业务逻辑的实际执行时长、业务逻辑单次可以执行的时间和脚本的总执行时长管理业务逻辑的执行次数。与现有技术相比,本专利技术具有如下优点和有益效果: 1.能够实现脚本的周期性重复运行,脚本能够定期自动重启和结束,从而能够实现代码的动态部署,无需人工干预,降低维护成本。2.对脚本的执行时间进行精确管理,时间精度高,可以达到秒级以下。3.消除了 PHP脚本并发,避免了并发带来的资源争抢、结果不可预见性。4.降低系统复杂度,避免了 PHP代码长期运行带来的内存泄露、资源死锁等问题,发挥了 PHP语言的长处。【附图说明】图1为本专利技术提供的脚本的可持续运行方法步骤流程图; 图2为步骤B控制流程图; 图3为步骤C控制流程图。【具体实施方式】以下将结合具体实施例对本专利技术提供的技术方案进行详细说明,应理解下述【具体实施方式】仅用于说明本专利技术而不用于限制本专利技术的范围。本专利技术提供了一种脚本的可持续运行方法和与之相应的系统,能够实现脚本的循环持续运行,并克服了现有技术中的种种缺陷,以下将以PHP脚本为例,进行详细阐述。运行系统主要包括以下四个模块:定时启动器、配置模块、并发控制模块、执行时间控制模块,定时启动器用于定时启动脚本,配置模块用于配置相关参数,并发控制模块用于创建和删除锁文件,并通过对锁文件的检查来防止同一脚本并发执行,执行时间控制模块用于循环执行业务逻辑并管理业务逻辑的执行频率。本专利技术提供的方法流程如图1所示,包括如下步骤: 步骤A,采用定时启动器周期性启动脚本。我们可以使用操作系统的定时器,如Iinux的crontab,这样能够周期性启动PHP脚本,例如:我们在crontab中设置PHP脚本的启动频率,每分钟启动I次。定时重启脚本令PHP代码不再需要长时间执行,当我们设置每分钟重启一次时,一个PHP脚本的执行时间只要达到一分钟即可,不需要成年累月的跑下去。此夕卜,由于脚本每分钟自动重启一次,而PHP的代码是可以随时更新的,新代码发布后,不需要人工重启PHP进程,到下一次启动PHP脚本时,就会执行新部署的代码,达到了 “在脚本执行过程中升级软件,而不用重启系统”的效果。在执行脚本时,还需要进行并发控制和时间控制,这就需要先配置两个关键的参数-整个PHP脚本单次最大可执行时间t (默认I分钟)、PHP脚本一个生命周期内业务逻辑的回调次数η (通常不超过60次)以及业务逻辑的回调函数。同时,本专利技术要求业务逻辑的回调函数执行时间小于t/n。上述这些参数和回调函数均在配置模块中进行配置,在启动脚本后即载入配置。步骤B,执行并发控制模块,通过检查、创建或删除锁文件防止并发情况产生。本步骤控制流程如图2所示,主要步骤为: 生成锁文件的名称,检查锁文件是否存在,当不存在锁文件时,创建锁文件并执行后续步骤;当存在锁文件时,还要定期重新检查锁文件是否存在,如果在等待允许时间内,原有存在的锁文件被删除则创建新的锁文件,并执行后续步骤;如果在等待允许时间内,原有存在的锁文件依然存在则检查锁文件从创建到当前的时间是否超过规定时间,如果超过规定时间,则删除原有存在的锁文件并创建新的锁文件;如果不超过规定时间,则结束脚本运行。本例将等待允许时间设为t/3,定期重新检查锁文件的时间定为每秒检查一次,规定时间设为3t,结合到脚本执行时可能存在的种种问题,列举在步骤B中可能存在的几种情况: 正常场景:脚本启动后,检查到不存在锁文件,这时创建锁文件,并执行后续逻辑(步骤C),执行完后删除锁文件,结束脚本执行。等待场景:脚本启动后,检查到存在锁文件,每秒钟重新检查一次;在t/3 (三分之一 t)时间内,旧的锁文件被创建锁文件的脚本删除,此时创建新的锁文件,并执行后续本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/CN104731655.html" title="脚本的可持续运行方法及系统原文来自X技术">脚本的可持续运行方法及系统</a>

【技术保护点】
脚本的可持续运行方法,其特征在于,包括如下步骤:步骤A,采用定时启动器周期性启动脚本;步骤B,通过锁文件防止并发情况产生:步骤B‑1,检查锁文件是否存在,当不存在锁文件时,创建锁文件并执行步骤C;当存在锁文件时,执行步骤B‑2;步骤B‑2,定期重新检查锁文件是否存在,如果在等待允许时间内原有存在的锁文件被删除则创建新的锁文件,并执行步骤C;如果在等待允许时间内原有存在的锁文件依然存在则执行步骤B‑3;步骤B‑3,检查锁文件从创建到当前的时间是否超过规定时间,如果超过规定时间,则删除原有存在的锁文件并创建新的锁文件;如果不超过规定时间,则结束脚本运行;步骤C,在整个PHP脚本单次最大可执行时间内循环执行业务逻辑,并根据单次业务逻辑的实际执行时长、业务逻辑单次可以执行的时间和脚本的总执行时长管理业务逻辑的执行次数;步骤D,删除锁文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:梅存兵
申请(专利权)人:南京途牛科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1