脚本处理方法及装置制造方法及图纸

技术编号:15762753 阅读:143 留言:0更新日期:2017-07-05 22:46
本披露文本公开了一种脚本处理方法及装置,该方法涉及网络技术领域。包括:获取待执行的脚本;根据所述脚本生成抽象语法树;在所述抽象语法树的设定节点中添加中断检查逻辑;根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。该方案中,即便用户在无意识下递交存在潜在死循环的脚本时,也可确保所编译出的脚本在执行时包括自动死循环检查,减少了由于死循环导致的计算资源浪费的情况,解决相关技术中存在的技术问题。

Script processing method and device

The disclosure text discloses a script processing method and device, which relates to the network technology field. Including: access to be executed according to the script; script generating abstract syntax tree; add interrupt checking logic in setting the node of the abstract syntax tree; abstract syntax tree according to add interrupt checking logic, the generated executable program supports interrupt check. In this scheme, even if the user submitted potential dead circulation script in the unconscious, but also to ensure that when executed including automatic dead cycle check script compile, reduce the waste of computing resources in the cycle of death, solve the technical problems existing in related technology.

【技术实现步骤摘要】
脚本处理方法及装置
本披露文本涉及网络
,尤其涉及一种脚本处理方法及装置。
技术介绍
目前,很多网页(WEB)应用中设置自定义脚本的功能,用户可以编写脚本,由网页应用提交给服务器;服务器接收到该脚本后,会对其进行编译并启动一个线程执行编译后的脚本,然后将结果返回给网页应用。如果用户恶意或者无意在脚本中写了死循环逻辑(例如:while(true){}),那么服务器启动的线程就会一直运行,非常消耗中央处理器(CentralProcessingUnit,CPU)等资源;如果该网页应用中包含死循环逻辑的脚本较多,那么该网页应用就会卡死,影响用户体验。为了检测脚本中的死循环逻辑,服务器通常会检测线程的执行时长,一旦线程的执行时长超过设定时长,就会发送中断信号,但是发送中断信号并不能保证线程一定会终止,并且仅仅通过线程执行时长来判断脚本中是否存在死循环逻辑,判断维度太单一,很难进行准确判断。可见,相关的脚本处理方法中,不能准确检测脚本中是否存在死循环逻辑,在检测出脚本中存在死循环逻辑时,也不能终止正在执行的线程。
技术实现思路
本披露文本实施例提供一种脚本处理方法及装置,用以解决相关技术中存在的不能准确检测脚本中是否存在死循环逻辑,以及在检测出脚本中存在死循环逻辑时,也不能终止正在执行的线程的问题。根据本披露文本实施例,提供一种脚本处理方法,包括:获取待执行的脚本;根据所述脚本生成抽象语法树;在所述抽象语法树的设定节点中添加中断检查逻辑;根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。具体的,所述设定节点是所述抽象语法树中包括的易产生死循环的节点。可选的,还包括:启动第一线程运行所述可执行程序;在所述可执行程序的运行过程中,调用所述中断检查逻辑执行:监控所述第一线程是否接收到中断请求;以及,统计所述脚本中的各个设定节点的循环次数,并监控各个所述设定节点的循环次数是否满足终止条件;若监控到所述第一线程接收到中断请求或者各个所述设定节点的循环次数满足所述终止条件,则终止所述第一线程运行所述可执行程序。具体的,监控各个所述设定节点的循环次数是否满足终止条件,具体包括:确定各个所述设定节点的循环次数的总和是否超过第一设定次数,若各个所述设定节点的循环次数的总和超过所述第一设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件;或者,确定各个所述设定节点的循环次数的平均值是否超过第二设定次数,若各个所述设定节点的循环次数的平均值超过所述第二设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件。具体的,终止所述第一线程运行所述可执行程序,具体包括:在所述可执行程序的运行过程中,逐级抛出异常,直到终止所述第一线程。可选的,还包括:调用第二线程执行:获取所述中断检查逻辑统计的所述脚本中的各个设定节点的循环次数;确定各个所述设定节点的循环次数的总和是否超过第三设定次数,若各个所述设定节点的循环次数的总和超过所述第三设定次数,则向所述第一线程发送所述中断请求;或者,确定各个所述设定节点的循环次数的平均值是否超过第四设定次数,若各个所述设定节点的循环次数的平均值超过所述第四设定次数,则向所述第一线程发送所述中断请求;或者,检测所述第一线程的运行时长,判断所述第一线程的运行时长是否超过设定时长,若所述第一线程的运行时长超过所述设定时长,则向所述第一线程发送所述中断请求。根据本披露文本实施例,还提供一种脚本处理装置,包括:获取模块,用于获取待执行的脚本;第一生成模块,用于根据所述脚本生成抽象语法树;添加模块,用于在所述抽象语法树的设定节点中添加中断检查逻辑;第二生成模块,用于根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。具体的,所述设定节点是所述抽象语法树中包括的易产生死循环的节点。可选的,还包括:启动模块,用于启动第一线程运行所述可执行程序;第一调用模块,用于在所述可执行程序的运行过程中,调用所述中断检查逻辑执行:监控所述第一线程是否接收到中断请求;以及,统计所述脚本中的各个设定节点的循环次数,并监控各个所述设定节点的循环次数是否满足终止条件;若监控到所述第一线程接收到中断请求或者各个所述设定节点的循环次数满足所述终止条件,则终止所述第一线程运行所述可执行程序。具体的,所述第一调用模块,用于监控各个所述设定节点的循环次数是否满足终止条件,具体用于:确定各个所述设定节点的循环次数的总和是否超过第一设定次数,若各个所述设定节点的循环次数的总和超过所述第一设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件;或者,确定各个所述设定节点的循环次数的平均值是否超过第二设定次数,若各个所述设定节点的循环次数的平均值超过所述第二设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件。具体的,所述第一调用模块,用于终止所述第一线程运行所述可执行程序,具体用于:在所述可执行程序的运行过程中,逐级抛出异常,直到终止所述第一线程。可选的,还包括第二调用模块,用于:调用第二线程执行:获取所述中断检查逻辑统计的所述脚本中的各个设定节点的循环次数;确定各个所述设定节点的循环次数的总和是否超过第三设定次数,若各个所述设定节点的循环次数的总和超过所述第三设定次数,则向所述第一线程发送所述中断请求;或者,确定各个所述设定节点的循环次数的平均值是否超过第四设定次数,若各个所述设定节点的循环次数的平均值超过所述第四设定次数,则向所述第一线程发送所述中断请求;或者,检测所述第一线程的运行时长,判断所述第一线程的运行时长是否超过设定时长,若所述第一线程的运行时长超过所述设定时长,则向所述第一线程发送所述中断请求。本披露文本实施例提供一种脚本处理方法及装置,获取待执行的脚本;根据所述脚本生成抽象语法树;在所述抽象语法树的设定节点中添加中断检查逻辑;根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。该方案中,在脚本的编译过程中,会由服务器自动在抽象语法树的设定节点中添加中断检查逻辑,通过该中断检查逻辑检查第一线程是否接收到中断请求以及脚本中是否存在死循环逻辑,并且在检测到第一线程接收到中断请求或者脚本中存在死循环逻辑时,终止该脚本的执行,从而即便用户在无意识下递交存在潜在死循环的脚本时,也可确保所编译出的脚本在执行时包括自动死循环检查,减少了由于死循环导致的计算资源浪费的情况,解决相关技术中存在的技术问题。附图说明此处所说明的附图用来提供对本披露文本的进一步理解,构成本披露文本的一部分,本披露文本的示意性实施例及其说明用于解释本披露文本,并不构成对本披露文本的不当限定。在附图中:图1为本披露文本实施例中一种脚本处理方法的流程图;图2为相关技术中while节点的结构示意图;图3为本披露文本实施例中while节点的结构示意图;图4为本披露文本实施例中根据脚本生成的抽象语法树的结构示意图;图5为本披露文本实施例中在while节点添加中断检查逻辑后到的抽象语法树的结构示意图;图6为本披露文本实施例中另一种脚本处理方法的流程图;图7为本披露文本实施例中一种脚本处理装置的结构示意图。具体实施方式为了使本披露文本所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本披露文本文档来自技高网...
脚本处理方法及装置

【技术保护点】
一种脚本处理方法,其特征在于,包括:获取待执行的脚本;根据所述脚本生成抽象语法树;在所述抽象语法树的设定节点中添加中断检查逻辑;根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。

【技术特征摘要】
1.一种脚本处理方法,其特征在于,包括:获取待执行的脚本;根据所述脚本生成抽象语法树;在所述抽象语法树的设定节点中添加中断检查逻辑;根据添加中断检查逻辑的抽象语法树,生成支持中断检查的可执行程序。2.如权利要求1所述的方法,其特征在于,所述设定节点是所述抽象语法树中包括的易产生死循环的节点。3.如权利要求1所述的方法,其特征在于,还包括:启动第一线程运行所述可执行程序;在所述可执行程序的运行过程中,调用所述中断检查逻辑执行:监控所述第一线程是否接收到中断请求;以及,统计所述脚本中的各个设定节点的循环次数,并监控各个所述设定节点的循环次数是否满足终止条件;若监控到所述第一线程接收到中断请求或者各个所述设定节点的循环次数满足所述终止条件,则终止所述第一线程运行所述可执行程序。4.如权利要求3所述的方法,其特征在于,监控各个所述设定节点的循环次数是否满足终止条件,具体包括:确定各个所述设定节点的循环次数的总和是否超过第一设定次数,若各个所述设定节点的循环次数的总和超过所述第一设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件;或者,确定各个所述设定节点的循环次数的平均值是否超过第二设定次数,若各个所述设定节点的循环次数的平均值超过所述第二设定次数,则监控到各个所述设定节点的循环次数满足所述终止条件。5.如权利要求3所述的方法,其特征在于,终止所述第一线程运行所述可执行程序,具体包括:在所述可执行程序的运行过程中,逐级抛出异常,直到终止所述第一线程。6.如权利要求3-5任一所述的方法,其特征在于,还包括:调用第二线程执行:获取所述中断检查逻辑统计的所述脚本中的各个设定节点的循环次数;确定各个所述设定节点的循环次数的总和是否超过第三设定次数,若各个所述设定节点的循环次数的总和超过所述第三设定次数,则向所述第一线程发送所述中断请求;或者,确定各个所述设定节点的循环次数的平均值是否超过第四设定次数,若各个所述设定节点的循环次数的平均值超过所述第四设定次数,则向所述第一线程发送所述中断请求;或者,检测所述第一线程的运行时长,判断所述第一线程的运行时长是否超过设定时长,若所述第一线程的运行时长超过所述设定时长,则向所述第一线程发送所述中断请求。7.一种脚本处理装置,其特征在于,包括:获取模块,用于获取待执行的脚本;第一生成模块,...

【专利技术属性】
技术研发人员:郭志通
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1