一种采用虚拟机显示脚本文件的方法及装置制造方法

文档序号:6516224阅读:179来源:国知局
一种采用虚拟机显示脚本文件的方法及装置制造方法
【专利摘要】一种采用虚拟机显示脚本文件的方法及装置。其中显示方法包括:接收到客户端发送的包括目标位置的网页生成请求;根据所述目标位置获取保存的脚本文件;检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。本发明在确定脚本文件后,对检索到的编译文件直接进行解析执行,从而得到用于在所述客户端显示网页的显示文件。由于编译文件是预先保存的,因此对于相同的脚本文件,无需重复多次的进行编译,从而减少了资源消耗,提供系统CPU的使用率,减少系统负载。
【专利说明】一种采用虚拟机显示脚本文件的方法及装置
【技术领域】
[0001]本发明涉及显示脚本文件相关【技术领域】,特别是一种采用虚拟机显示脚本文件的方法及装置。
【背景技术】
[0002]脚本文件,即动态网页文件,例如php脚本文件,使用服务器端php脚本解释器,分析、解释,计算Php脚本文件,生成HTML格式的内容,响应给客户端浏览器。由于需要结合服务器上的数据,因此现有的脚本文件显示方法,一般需要先编译脚本文件,执行类型推演及优化,然后解析执行编译文件,得到计算结果,通常为HTML格式。客户端获取该计算结果并显示。
[0003]该方法一般应用在服务器上,由于服务器的功能较为强大,CPU资源较多,因此,月艮务器基本能支持编译及解析功能。
[0004]然而,当把现有技术的采用虚拟机分析、解析脚本文件时,在用户量很大时,CPU消耗较高。例如php的官方虚拟机在分析、计算php脚本时,CPU消耗较高。仍然采用现有技术的脚本文件显示方法,容易导致系统资源不足,服务器的虚拟机出现不能提供服务等问题。

【发明内容】

[0005]基于此,有必要针对现有技术在虚拟机上执行脚本文件显示时,CPU消耗较大的技术问题,提供一种采用虚拟机显示脚本文件的方法及装置。
[0006]一种采用虚拟机显示脚本文件的方法,包括:
[0007]接收到客户端发送的包括目标位置的网页生成请求;
[0008]根据所述目标位置获取保存的脚本文件;
[0009]检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
[0010]一种采用虚拟机显示脚本文件的装置,包括:
[0011]网页生成请求接收模块,用于接收到客户端发送的包括目标位置的网页生成请求;
[0012]脚本文件获取模块,用于根据所述目标位置获取保存的脚本文件;
[0013]编译文件获取解析模块,用于检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
[0014]本发明在确定脚本文件后,对检索到的编译文件直接进行解析执行,从而得到用于在所述客户端显示网页的显示文件。由于编译文件是预先保存的,因此对于相同的脚本文件,无需重复多次的进行编译,从而减少了资源消耗,提供系统CPU的使用率,减少系统负载。
【专利附图】

【附图说明】
[0015]图1为本发明一种采用虚拟机显示脚本文件的方法的工作流程图;
[0016]图2为本发明一种采用虚拟机显示脚本文件的装置的结构模块图;
[0017]图3所示为本发明的一个例子的系统结构图。
【具体实施方式】
[0018]下面结合附图和实施例对本发明做进一步详细的说明。
[0019]如图1所示为本发明一种采用虚拟机显示脚本文件的方法的工作流程图,包括:
[0020]步骤S101,接收到客户端发送的包括目标位置的网页生成请求;
[0021]步骤S102,根据所述目标位置获取保存的脚本文件;
[0022]步骤S103,检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
[0023]其中,步骤S102中,脚本文件保存在磁盘或者数据库中。
[0024]其中,步骤S103中,编译文件预先编译并保存,每次脚本文件经过更新,则成为新版本的脚本文件。在执行步骤S103中,仅对脚本文件的最新版本进行编译后的编译文件直接解析,如果保存的是对脚本文件的旧版本进行编译得到的编译文件,则说明脚本文件的最新版本并未进行编译,因此不能直接解析。
[0025]本实施例由于采用了对脚本文件的最新版本进行编译后的编译文件直接解析,一个编译文件能一直使用直到脚本文件发生了变化,因此避免了对脚本文件进行多次编译,从而造成资源浪费。
[0026]如果没有检索到所述编译文件,则可以不生成显示文件,直接退出流程。然而,在其中一个实施例中,还包括:
[0027]如果没有检索到所述编译文件,则采用虚拟机的词法分析器和语法分析器分析并编译所述脚本文件的最新版本得到编译文件,保存所述编译文件,并解析执行所述编译文件,得到所述脚本文件的用于在所述客户端显示网页的显示文件,并向所述客户端返回所述显示文件。
[0028]在没有保存编译文件的情况下,采用虚拟机的词法分析器和语法分析器分析并编译所述脚本文件的最新版本得到编译文件,同时保存新得到的编译文件,以在后续使用。
[0029]在其中一个实施例中,将所述编译文件保存在缓存中。
[0030]本实施例将编译文件保存在缓存中,则存取更为快捷。
[0031]在其中一个实施例中,所述编译文件包括字节码。字节码即bytecode。
[0032]在其中一个实施例中,采用虚拟机的中间字节码解析器解析执行所述字节码,得到所述脚本文件的静态文件作为所述显示文件。
[0033]在其中一个实施例中,采用虚拟机的即时编译器解析执行所述字节码,将所述字节码翻译成机器码,将所述机器码作为所述显示文件。
[0034]本实施例采用即时编译器将编译文件里的字节码翻译成机器码,去掉解释字节码的过程,大大提高计算速度,能进一步的提高性能。根据各个不同的项目特别是Php代码的功能,本实施例可以提升50%-30%的性能,通常的平均性能提升在100%。
[0035]如图2所示为本发明一种采用虚拟机显示脚本文件的装置的结构模块图,包括:
[0036]网页生成请求接收模块201,用于接收到客户端发送的包括目标位置的网页生成请求;
[0037]脚本文件获取模块202,用于根据所述目标位置获取保存的脚本文件;
[0038]编译文件获取解析模块203,用于检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
[0039]在其中一个实施例中,还包括:
[0040]编译文件生成解析模块,用于如果没有检索到所述编译文件,则采用虚拟机的词法分析器和语法分析器分析并编译所述脚本文件的最新版本得到编译文件,保存所述编译文件,并解析执行所述编译文件,得到所述脚本文件的用于在所述客户端显示网页的显示文件,并向所述客户端返回所述显示文件。
[0041]在其中一个实施例中,将所述编译文件保存在缓存中。
[0042]在其中一个实施例中,所述编译文件包括字节码。
[0043]在其中一个实施例中,采用虚拟机的中间字节码解析器解析执行所述字节码,得到所述脚本文件的静态文件作为所述显示文件。
[0044]在其中一个实施例中,采用虚拟机的即时编译器解析执行所述字节码,将所述字节码翻译成机器码,将所述机器码作为所述显示文件。
[0045]如图3所示为本发明的一个例子的系统结构图,包括:客户端浏览器31和虚拟机的服务器32。
[0046]其中,服务器32包括:
[0047]实现Http Web Server功能的web服务器组件321,采用Iibevent实现;
[0048]字节码缓存322 (Code Cache),为 SQLite database (SQLite database 为常用一种数据库)的缓存,用于缓存中间字节码,减少词法,语法分析次数。
[0049]服务器32上的虚拟机323采用HipHop VM (HHVM)0虚拟机323上包括:
[0050]分析引擎3231,包括词法分析器(Lexical Analysor)和语法分析器(SemanticAnalysor),用于分析php源代码,生成字节码。使用Linux系统的Flex和Bison实现。
[0051]中间字节码解释器3232 (Interpreter),用于解释执行字节码,返回运算结果。
[0052]即时编译器3233 (Just In Time compilation, JIT),用于将字节码翻译成机器码执行,提高代码运行速度。
[0053]图3所示系统的工作原理如下:
[0054]虚拟机的web服务器组件221接收到客户端浏览器21向装载虚拟机的服务器22发送的网页生成请求;
[0055]web服务器组件221根据网页生成请求的hostname找到相应的php脚本文件;
[0056]如果识别出php脚本文件,会先检查在SQLite database的cache,即字节码缓存322,是否有已经编译过的字节码,如果有,并且该php脚本文件没有被修改过,将会直接采用中间自己码解析器3232解析执行该缓存的bytecode。如果没有,将会调用分析引擎3231来编译php脚本文件,执行类型推演,优化,并存储结果到SQLite database的cache,即字节码缓存322中。
[0057]可选地,对bytecode的解析执行还可以采用即时编译器3233实现,将字节码翻译成机器码执行,以提高代码运行速度。
[0058]与现有的php官方虚拟机比较:
[0059]采用公司的搜索服务页面进行比较:
[0060]域名:search,jd.com
[0061]上线一台服务器:172.17.5.110
[0062]运行效果见表1和表2:
[0063]
【权利要求】
1.一种采用虚拟机显示脚本文件的方法,其特征在于,包括: 接收到客户端发送的包括目标位置的网页生成请求; 根据所述目标位置获取保存的脚本文件; 检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
2.根据权利要求1所述的采用虚拟机显示脚本文件的方法,其特征在于,还包括: 如果没有检索到所述编译文件,则采用虚拟机的词法分析器和语法分析器分析并编译所述脚本文件的最新版本得到编译文件,保存所述编译文件,并解析执行所述编译文件,得到所述脚本文件的用于在所述客户端显示网页的显示文件,并向所述客户端返回所述显示文件。
3.根据权利要求1所述的采用虚拟机显示脚本文件的方法,其特征在于,将所述编译文件保存在缓存中。
4.根据权利要求1所述的采用虚拟机显示脚本文件的方法,其特征在于,所述编译文件包括字节码。
5.根据权利要求4所述的采用虚拟机显示脚本文件的方法,其特征在于,采用虚拟机的中间字节码解析器解析执行所述字节码,得到所述脚本文件的静态文件作为所述显示文件。
6.根据权利要求4所述的采用虚拟机显示脚本文件的方法,其特征在于,采用虚拟机的即时编译器解析执行所述字节码,将所述字节码翻译成机器码,将所述机器码作为所述显示文件。
7.一种采用虚拟机显示脚本文件的装置,其特征在于,包括: 网页生成请求接收模块,用于接收到客户端发送的包括目标位置的网页生成请求; 脚本文件获取模块,用于根据所述目标位置获取保存的脚本文件; 编译文件获取解析模块,用于检索所述脚本文件的最新版本进行编译后的编译文件,如果检索到所述编译文件,则采用虚拟机解析执行所述编译文件,得到所述脚本文件的显示文件,并向所述客户端返回所述显示文件,所述显示文件用于在所述客户端显示网页。
8.根据权利要求7所述的采用虚拟机显示脚本文件的装置,其特征在于,还包括: 编译文件生成解析模块,用于如果没有检索到所述编译文件,则采用虚拟机的词法分析器和语法分析器分析并编译所述脚本文件的最新版本得到编译文件,保存所述编译文件,并解析执行所述编译文件,得到所述脚本文件的用于在所述客户端显示网页的显示文件,并向所述客户端返回所述显示文件。
9.根据权利要求7所述的采用虚拟机显示脚本文件的装置,其特征在于,将所述编译文件保存在缓存中。
10.根据权利要求7所述的采用虚拟机显示脚本文件的装置,其特征在于,所述编译文件包括字节码。
11.根据权利要求10所述的采用虚拟机显示脚本文件的装置,其特征在于,采用虚拟机的中间字节码解析器解析执行所述字节码,得到所述脚本文件的静态文件作为所述显示文件。
12.根据权利要求10所述的采用虚拟机显示脚本文件的装置,其特征在于,采用虚拟机的即时编译器解析执行所述字节码,将所述字节码翻译成机器码,将所述机器码作为所述显 示文件。
【文档编号】G06F17/30GK103544276SQ201310499437
【公开日】2014年1月29日 申请日期:2013年10月22日 优先权日:2013年10月22日
【发明者】刘垒, 胡志广, 王宏 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1