1、10申请公布号CN102377799A43申请公布日20120314CN102377799ACN102377799A21申请号201010254326922申请日20100811H04L29/08200601G06F9/46200601G06F17/3020060171申请人腾讯科技深圳有限公司地址518044广东省深圳市福田区振兴路赛格科技园2栋东403室72发明人王震张宁务孟庆74专利代理机构北京派特恩知识产权代理事务所普通合伙11270代理人张颖玲王黎延54发明名称手机浏览器服务器端及其实现浏览器双线程模式的方法57摘要本发明公开了一种手机浏览器服务器端实现浏览器双线程模式的方法,在手机
2、浏览器服务器端设置监控线程;该方法还包括监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入时间事件队列。本发明还同时公开了一种手机浏览器服务器端,采用本发明能在不影响代码质量和执行效率,保证服务器端稳定、安全、可靠运行的同时,简单方便地实现手机浏览器的双线程内核。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图5页CN102377809A1/2页21一种手机浏览器服务器端实现浏览器双线程模式的方法,其特征在于,在
3、手机浏览器服务器端设置监控线程;该方法还包括监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入预设的时间事件队列。2根据权利要求1所述的方法,其特征在于,该方法还包括浏览器内核线程在执行程序脚本之前,向监控线程发送监控程序脚本执行的监控任务;并在程序脚本正常执行结束后,使所述监控任务失效。3根据权利要求1所述的方法,其特征在于,所述监控线程对浏览器内核线程指定的需执行任务进行监控为查看当前是否有监控任务,如果没有监控任务,则监控线程进入睡眠状态;如果有监
4、控任务,则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需等待时间后进入等待睡眠状态;休眠需等待时间后,监控线程开始执行任务,执行结束后返回查看状态。4根据权利要求3所述的方法,其特征在于,所述监控线程对浏览器内核线程指定的需执行任务进行监控之前,该方法还包括浏览器内核线程包装好需执行的任务,并计算出具体执行的时间;将监控任务发送给监控线程,由监控线程监控是否到时。5根据权利要求1所述的方法,其特征在于,该方法还包括浏览器内核线程向监控线程指定除监控程序脚本执行和监控需执行任务以外的其他监控任务,监控线程完成对相应监控任务的监控。6根据权利要求1至5任一项所述的方
5、法,其特征在于,该方法还包括设置监控任务队列;相应的,所述浏览器内核线程将监控程序脚本执行的监控任务保存在监控任务队列中;和/或将需执行的任务作为监控任务保存在监控任务队列中;和/或将其他监控任务保存在监控任务队列中。7根据权利要求1至5任一项所述的方法,其特征在于,所述程序脚本为JAVASCRIPT脚本;所述程序脚本执行为JS执行。8一种手机浏览器服务器端,其特征在于,该手机浏览器服务器端包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,浏览器内核线程单元,用于发送指定的监控任务,执行程序脚本;监控线程单元,用于执行对监控任务的监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制
6、结束,在计时时间到时将需要执行的任务放入时间事件队列;所述时间事件队列,用于保存监控线程单元放置的需执行任务,并将需执行任务作为事件由浏览器内核线程单元获取并执行。9根据权利要求8所述的手机浏览器服务器端,其特征在于,所述监控线程单元,还用于对除监控程序脚本执行和监控需执行任务以外的其他监控任务进行监控。10根据权利要求8所述的手机浏览器服务器端,其特征在于,该手机浏览器服务器端权利要求书CN102377799ACN102377809A2/2页3还包括监控任务队列,用于保存所有监控任务,由监控线程单元获取并执行监控。11根据权利要求8、9或10所述的手机浏览器服务器端,其特征在于,该手机浏览器
7、服务器端还包括用户请求队列,用于放置用户请求,并由浏览器内核线程单元选择执行。12根据权利要求8、9或10所述的手机浏览器服务器端,其特征在于,所述程序脚本为JAVASCRIPT脚本;所述程序脚本执行为JS执行。权利要求书CN102377799ACN102377809A1/7页4手机浏览器服务器端及其实现浏览器双线程模式的方法技术领域0001本发明涉及手机浏览器技术,尤其是涉及一种手机浏览器服务器端及其实现浏览器双线程模式的方法。背景技术0002随着移动通信和网络业务的迅猛发展,移动终端如手机能提供越来越多的功能和业务,如短信、彩信、上网功能等等。以移动终端是手机为例,在手机上实现上网功能,就
8、需要在手机上装载浏览器,于是就出现了手机浏览器。所谓手机浏览器是专门运行于手机上的浏览器,可以实现通过手机上网浏览各种互联网内容。在实际应用中,手机终端一侧作为手机浏览器客户端,对应的网络侧作为手机浏览器服务器端,手机浏览器服务器端接收手机浏览器客户端上网浏览的请求,下载并处理网页,然后推送给手机浏览器客户端显示网页内容的后台处理程序,向用户显示所浏览的网页内容。0003目前,手机浏览器分为两种一种称为全页面渲染的浏览器,是装载于手机浏览器客户端的一个独立的程序,能使手机用户像在计算机上使用浏览器一样,但这种浏览器大都适用于高端智能手机,只有这类手机的性能才能满足全页面渲染浏览器的运行;另一种
9、是带后台处理的浏览器,这类浏览器中,用户并不直接从站点下载内容,而是将请求提交给统一的服务器,由服务器端的一系列程序如下载、解析、JS执行等等程序处理过后,将一个轻量级的超文本链接标示语言HTML页面推送给手机浏览器客户端并呈现给用户。这里,JS是JAVASCRIPT的简称,是一种动态的页面编程语言,通常嵌入在HTML文件中,用于对页面进行处理和操作,响应用户请求,是页面可交互性的主要支撑。0004随着动态网页的发展,对于浏览器,目前最为影响性能的就是JAVASCRIPT脚本的执行,特别是很多网络应用程序已开始不断涌现。目前各种JS引擎都在努力提高自身的性能,但JS引擎是一个庞大的编译及执行系
10、统,对资源的消耗比较大。一般,普通的智能手机对于复杂的JS程序还有些困难,因此,现有大多数手机浏览器采用的都是带后台处理的浏览器,本文也主要针对第二种浏览器的实现进行讨论。如图1所示,这种浏览器的处理流程是这样0005当用户使用带后台处理的浏览器访问网页时,浏览器程序会通过无线网络向后台服务器发送页面请求,由后台服务器与互联网进行通讯,将网页内容下载,之后再由后台服务器对网页内容进行处理,最终形成一个简单的HTML页面,发送到手机浏览器客户端。这里,后台服务器可作为手机浏览器服务器端。0006通过上述流程,可以大大减轻客户端浏览器的压力,由于目前大多数智能手机的性能还无法与计算机的性能相比,因
11、此,简化客户端程序是非常必要的。也就是说,原先在计算机上实现的浏览器程序,现在需要由手机浏览器客户端程序和后台服务器共同完成;具体的,采用带后台服务器模式的手机浏览器,将复杂的任务交给后台服务器执行,而手机浏览器客户端只负责显示最简单的页面,这样可以增强客户端的体验。0007对于采用带后台服务器模式的手机浏览器,后台服务器的主要功能包括帮助客说明书CN102377799ACN102377809A2/7页5户端浏览器程序执行JAVASCRIPT语句;下载网页内容,并进行处理和过滤后再推送给客户端,以大大减少无用信息占用用户流量的比例,为用户节省流量;将网页改造成为适合手机显示的模式,以增强用户体
12、验;响应用户请求事件,比如按钮点击等等。相应的,手机浏览器客户端可实现的功能包括解析和渲染最简单的不带JAVASCRIPT语句,甚至不带层叠样式表CSS,CASCADINGSTYLESHEETS信息的HTML页面;向后台服务器发送各种请求,如打开网页、点击按钮等等。0008对于带后台处理的手机浏览器,后台服务器基本上对用户来说是透明的,不仅用户体验不会降低,而且这种浏览器可大大减少程序的大小,简化手机浏览器客户端。由于消耗较大的工作都由后台服务器执行,可提升运算速度,且不会使用户感觉机器变慢等等,这种方式很适合手机这类移动终端使用。但与此同时,对于服务器来说,会面临很大的压力首先,传统意义上的
13、浏览器是客户端程序,比如HTML解析、JAVASCRIPT执行等等功能,如果遇到恶意代码,如死循环或CRASH,用户只需要关闭即可;但如果服务器端程序陷入死循环或CRASH,就会使整个平台不能运转,进而影响到所有的用户;第二,客户端大多采用多线程、多进程等方式来处理页面,而服务器端不能采用类似多线程或多进程的模式,因为所有用户的页面数据都在服务器端保存,线程数或进程数将非常大,服务器端是无法承受的;第三,页面存在生存期的问题,大量页面聚积在服务器上,可能会超出服务器的内存。0009鉴于上述问题,同时考虑到浏览器是一个开放平台,很多功能需要开放给用户及网站开发者使用,因此,为了保证服务器的健壮性
14、、稳定性和安全性,使服务器正常运作,现有一种最简单的方案是有选择性的支持某些操作或者标准,这种方案可禁止所有可能引发问题的模块的执行,只提供最简单的服务。其基本流程如图2所示,包括获取到网页数据后,先去除JS标签及其内容;再解析HTML建立DOM树;计算CSS数据并插入到相应的标签中;之后反序列化,生成新的HTML页面,推送给用户的手机浏览器客户端;最后清除页面数据。这种方案先将JAVASCRIPT除去,不支持浏览器脚本,在生成简单页面并传递给用户后,即从服务器上删除。但这种方案存在一些问题,就是第一、交互性差。这种方法由于无法支持JAVASCRIPT,因此几乎没有网页交互性可言,像论坛、邮箱
15、等也大多不能支持;第二,过于简单,后台优势没有得到发挥。显然,这种方案中后台服务器程序基本只是一个中转站用来过滤,使用后台服务器就显得有些多余,而且提供的页面也过于简单,用户体验非常差。0010现有技术还提出一种解决方案,采用监控的概念,且支持更多的操作,但此方案在具体实现上只是简单地在一些程序语句之间添加判断语句,比如在JAVASCRIPT语句执行时,设置计数器,每执行几步就将计数器加1,如果执行超过一定次数,就认为超时或者死循环而退出。因此,这种方案存在以下问题一方面,由于每隔一定执行间隙就要添加代码,不仅降低了代码质量,影响代码执行效率,而且还会使代码膨胀,如果需要监控太多操作的话,就会
16、使得代码掺杂太多的无用代码,直接扩大了程序规模;另一方面,采用这种方案在需要改动代码时,还需要考虑这些掺杂的代码问题,如果程序添加了某项功能,需要监控时,也需要对这项功能掺杂一些代码,很不方便,因此该方案可扩展性差。发明内容0011有鉴于此,本发明的主要目的在于提供一种手机浏览器服务器端及其实现浏览器说明书CN102377799ACN102377809A3/7页6双线程模式的方法,能在不影响代码质量和执行效率,保证服务器端稳定、安全、可靠运行的同时,简单方便地实现手机浏览器的双线程内核。0012为达到上述目的,本发明的技术方案是这样实现的0013本发明提供了一种手机浏览器服务器端实现浏览器双线
17、程模式的方法,在手机浏览器服务器端设置监控线程;该方法还包括0014监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;0015监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入预设的时间事件队列。0016上述方案中,该方法还包括浏览器内核线程在执行程序脚本之前,向监控线程发送监控程序脚本执行的监控任务;并在程序脚本正常执行结束后,使所述监控任务失效。0017上述方案中,所述监控线程对浏览器内核线程指定的需执行任务进行监控为查看当前是否有监控任务,如果没有监控任务,则监控线程进入睡眠状态;如果有监控任务,
18、则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需等待时间后进入等待睡眠状态;休眠需等待时间后,监控线程开始执行任务,执行结束后返回查看状态。0018上述方案中,所述监控线程对浏览器内核线程指定的需执行任务进行监控之前,该方法还包括浏览器内核线程包装好需执行的任务,并计算出具体执行的时间;将监控任务发送给监控线程,由监控线程监控是否到时。0019上述方案中,该方法还包括浏览器内核线程向监控线程指定除监控程序脚本执行和监控需执行任务以外的其他监控任务,监控线程完成对相应监控任务的监控。0020上述方案中,该方法还包括设置监控任务队列;相应的,所述浏览器内核线程将监控
19、程序脚本执行的监控任务保存在监控任务队列中;和/或将需执行的任务作为监控任务保存在监控任务队列中;和/或将其他监控任务保存在监控任务队列中。0021上述方案中,所述程序脚本为JAVASCRIPT脚本;所述程序脚本执行为JS执行。0022本发明还提供了一种手机浏览器服务器端,包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,0023浏览器内核线程单元,用于发送指定的监控任务,执行程序脚本;0024监控线程单元,用于执行对监控任务的监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束,在计时时间到时将需要执行的任务放入时间事件队列;0025所述时间事件队列,用于保存监控线程单元放置
20、的需执行任务,并将需执行任务作为事件由浏览器内核线程单元获取并执行。0026上述方案中,所述监控线程单元,还用于对除监控程序脚本执行和监控需执行任务以外的其他监控任务进行监控。0027上述方案中,该手机浏览器服务器端还包括监控任务队列,用于保存所有监控任务,由监控线程单元获取并执行监控。该手机浏览器服务器端还包括用户请求队列,用于放置用户请求,并由浏览器内核线程单元选择执行。0028本发明所提供的手机浏览器服务器端及其实现浏览器双线程模式的方法,在手机浏览器服务器端设置监控线程,与浏览器内核线程并行工作,可实时监控程序脚本是否正说明书CN102377799ACN102377809A4/7页7常
21、执行,以防止程序脚本如JAVASCRIPT脚本执行时间过长进入死循环而导致整个平台瘫痪;该监控线程还可以监控超时事件,如此,可协助浏览器内核线程监控一些计时器到时后需要执行的任务,在计时器到时后将需要执行的任务放入相应事件队列,以备浏览器内核线程调用执行;该监控线程还可以随时增加需要监控的其他任务,协助浏览器内核线程完成对指定任务的监控。也就是说,为了保障浏览器内核程序安全、稳定地运行在手机浏览器服务器端,有效规避恶意网页代码导致的服务器瘫痪,防止不良页面代码对服务器提供的服务造成危害,本发明提出的运行在后台服务器的解决方案基于手机浏览器内核的双线程模式实现。0029本发明中,由于设置了监控线
22、程对浏览器内核线程执行程序脚本进行监控,这样,可及时发现服务器端浏览器可能出现的问题,避免整个平台不能运转,也不会影响到很多用户的使用。本发明中仅增加了监控线程,来协助浏览器内核线程完成相应工作,不会增加服务器端的太多负荷,能够简单方便的实现监控。0030本发明增加监控线程,是与浏览器内核线程并行工作,对原有浏览器内核线程获取网页数据以及对网页数据的处理没有任何影响,因此,不会存在交互差、以及后台服务器仅作为中转站仅用于过滤数据的问题。0031本发明中的监控线程,是与浏览器内核线程是并列的两个线程,相互独立执行、互不影响,两者之间仅通过对各个队列,如时间事件队列、监控任务队列的处理发生关联,因
23、此,不会造成程序语句如JAVASCRIPT语句执行的频繁中断,也不会因为增加程序脚本如JAVASCRIPT脚本的代码,造成代码质量下降和代码执行效率降低。另外,由于所设置的监控线程支持对浏览器内核线程新增监控任务的监控,无需对浏览器内核线程做很大改动,具备足够的可扩展性和更强的适用性。附图说明0032图1为现有技术中带后台处理的浏览器的实现过程示意图;0033图2为现有技术中保证在手机浏览器服务器端正常运行手机浏览器的一种解决方案实现流程示意图;0034图3为本发明中手机浏览器服务器端实现浏览器双线程模式的关系示意图;0035图4为本发明中监控线程自身的实现流程示意图;0036图5为本发明中监
24、控线程对JS的执行进行监控的实现流程示意图;0037图6为本发明中监控线程对需执行任务进行监控的实现流程示意图。具体实施方式0038本发明的基本思想是在手机浏览器服务器端设置监控线程,与浏览器内核线程并行工作,对浏览器内核线程执行的程序脚本是否正常进行监控,并对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入时间事件队列,提供给浏览器内核线程处理。0039这里,所述程序脚本可以是JAVASCRIPT脚本,相应的,程序脚本执行为JS执行。下文以程序脚本为JAVASCRIPT脚本为例,说明本发明的实现过程及服务器端结构,监控其他程序脚本时,可采用类似过程和结构。说明书CN10
25、2377799ACN102377809A5/7页80040针对服务器端浏览器遭遇恶意网页代码时不能自行关闭网页这一问题,本发明提出的解决方案就是在手机浏览器服务器端运行的浏览器内核线程之外,再执行一个单独的监测线程,专门用以监控浏览器运行过程中的异常情况,比如某段JAVASCRIPT执行时间超时等等。另外,考虑到手机浏览器服务器端不宜开辟过多线程,否则会导致不稳定及性能下降的问题,本发明仅采用双线程模式,即在手机浏览器服务器端运行一个浏览器内核线程、一个针对浏览器的监控线程。0041具体的,浏览器内核线程与监控线程之间的关系如图3所示,在手机浏览器服务器端并行运行有浏览器内核线程30和监控线程
26、31,浏览器内核线程30和监控线程31构成浏览器服务器端的双线程模式,该双线程结构可以位于图1所示的后台服务器中;浏览器内核线程30和监控线程31之间通过时间事件队列33和监控任务队列34相关联。当手机浏览器用户需要访问某个网页或进行网页操作时,手机浏览器客户端会发送请求到后台服务器端,这些请求存储在用户请求队列32中,会依次调度给浏览器内核线程进行处理。其中,浏览器内核线程完成的功能包括解析页面、执行JAVASCRIPT脚本、响应用户操作、生成简单页面推送给客户端等等。0042如图3所示,浏览器内核线程30所实现的功能中,有三部分子功能与监控线程31相关,具体是第一,浏览器内核线程30在执行
27、JS前需要发送请求监控消息给监控线程31,以触发监控线程31对JS是否正常执行进行监控,相应的,执行JS正常结束后需要取消监控,如图3中30A所示;第二,浏览器内核线程30会执行超时TIMEOUT消息,对监控线程31放置于时间事件队列33中需执行的任务作为事件进行处理,如图3中的30B所示;第三,浏览器内核线程30会向监控线程31指定一些除监控JS执行和监控需执行任务以外的其他监控任务,由监控线程31完成对相应监控任务的监控,如图3中30C所示;上述三个部分相互独立完成,可以同时具备三个部分,也可以具备其中一部分或两部分。0043监控线程31中与浏览器内核线程30三部分子功能相对应的子功能包括
28、第一,对浏览器内核线程30可能出现的不良状况进行监控,如JAVASCRIPT脚本由于产生死循环执行时间过长,具体的,监控线程31在预先设置的JS执行时间到时,如果JS还未执行完,则强制结束JS的执行,如图3中31A所示;第二,针对延迟事件,比如JAVASCRIPT脚本中的SETTIMEOUT和SETTIMEINTERVAL函数,它们指定一段时间后浏览器需要执行的任务,这种可以请求监控线程帮忙计算时间,具体的,计时器时间到时,监控线程31将需要执行的任务添加到时间事件队列中,以便调度给浏览器内核线程30执行,如图3中31B所示;第三,监控线程31可以执行浏览器内核线程30指定的其他监控任务,如图
29、3中31C所示,监控线程31有足够的可扩展性,能方便地添加各种其他监控需求。0044下面结合附图分别对监控线程的整体流程、监控线程对JAVASCRIPT脚本执行监控的流程、以及监控线程对需执行任务进行监控的流程进行详细描述。0045参照图3,监控线程所执行的任务是从监控任务队列34中取出监控任务,并在等待指定时间后调用任务所指定的操作,具体的监控线程的处理流程如图4左侧虚框中所示,包括查看当前监控任务队列中是否有监控任务,如果监控任务队列中没有监控任务,则监控线程进入睡眠状态;如果监控任务队列中有监控任务,则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需要等待的
30、时间,然后进入等待睡眠状态;休眠所计算的需等待时间后,监控线程开始执行任务,执行结束后,则进入新说明书CN102377799ACN102377809A6/7页9一轮的循环返回查看状态,监控线程是循环执行的。0046当外界线程向监控任务队列中添加新任务时,比如当浏览器内核线程需要监控线程进行监控时,就会向监控任务队列中发送监控任务,如图4右侧所示,浏览器内核线程将新任务添加到监控任务队列中,如果此时监控线程处于休眠状态,则会唤醒处于睡眠状态的监控线程,迫使监控线程重新回到原点进行监控任务的调度。0047综上所述,监控线程就是在不断执行监控任务队列中监控任务的过程,只是这些监控任务的特殊之处是有时
31、间性,必须在预定时间之后执行。0048随着互联网的发展,目前的绝大多数WEB网页都是动态网页,与用户之间的交互是非常普遍的,这主要在于JAVASCRIPT脚本语言在网页中的广泛使用。正因为JAVASCRIPT的强大功能,使某些恶意代码会随着网址的被访问而传到浏览器上。通常,对于手机浏览器客户端来说,网页出现异常,用户可以自行点击关闭,结束对当前网址的访问;但对于手机浏览器服务器端来说,无法自行关闭,因此,本发明提出浏览器双线程模式来解决可能出现的网页异常情况。0049在双线程模式下,浏览器内核线程每次执行JAVASCRIPT脚本之前都要向监控线程发送监控JS执行的监控任务,并设定一个时间T,比
32、如3秒;当时间T过后,JAVASCRIPT脚本如果还未结束,则必须强行结束JAVASCRIPT的执行。具体监控线程对JS的执行进行监控的实现流程如图5所示,由左侧虚框内的浏览器内核线程与右侧虚框内的监控线程相互匹配实现,包括0050步骤11在执行JAVASCRIPT脚本之前,需要向监控线程发送监控JS执行的监控任务并设置运行RUNNING标志,该监控任务告知监控线程;0051在T秒时间内,如果JAVASCRIPT脚本的状态仍是RUNNING,则强行结束JAVASCRIPT脚本的执行;而如果T秒后JAVASCRIPT脚本的执行状态不为RUNNING,则不需要做任何动作。0052步骤12浏览器内核
33、线程开始执行JAVASCRIPT脚本;0053步骤13浏览器内核线程正常执行完JAVASCRIPT脚本后,取消RUNNING标志,如果步骤11中发送的监控任务还没有执行,则使相应监控任务失效。0054采用监控线程后,后台服务器端的浏览器内核线程可以放心地执行JAVASCRIPT脚本,而不用担心死循环或其它原因造成超时,进而导致的服务器处于停滞状态的问题发生。0055一般,所有与浏览器内核相关的操作都由浏览器内核线程执行,但时间控制可由监控线程来协助计算和监控时间,因此,如图3所示,本发明中设置有时间事件队列。比如JAVASCRIPT中有两个函数SETTIMEOUT和SETTIMEINTERVA
34、L,这两个函数都是要求在一段时间后执行指定的操作,从SETTIMEOUT或SETTIMEINTERVAL开始,指定时间过后,监控线程就通过时间事件队列告知浏览器内核线程,可以执行该操作了;当浏览器内核再次调度队列时,则可以执行该事件了。具体的监控线程对需执行任务进行监控的实现流程如图6所示,包括0056步骤21开始执行SETTIMEOUT或SETTIMEINTERVAL等与时间事件相关的函数;0057步骤22浏览器内核线程包装好需要执行的任务,并计算出具体执行的时间;0058步骤23浏览器内核线程将监控任务发送给监控线程,由监控线程去监控具体时说明书CN102377799ACN10237780
35、9A7/7页10间,如果监控线程发现时间到了,则加入到时间事件队列中。0059这样,当浏览器内核线程再次调度时,会查找有没有时间事件可以执行,如果有的话就执行,如图1所示选择要处理的请求或事件。0060本发明的双线程模式将监控任务包装起来,可以大大增加程序的可扩展性,如果有某些模块需要被监控的话,只需要在进入模块前发送监控请求到监控任务队列中,监控线程就会按照包装任务的要求对相应模块进行监控。举个简单的例子,比如页面驻留内存时间超时,则可通过监控线程在超时后将驻留页面从内存中删除,以防止页面长期驻留内存造成服务器压力变大。可见,本发明可以很容易将任务添加进来,纳入监控线程的监控范围。0061为
36、了实现上述方法,本发明还提供了一种手机浏览器服务器端,包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,0062浏览器内核线程单元,用于发送指定的监控任务,执行JAVASCRIPT脚本;这里,所述指定的监控任务可以是在执行JAVASCRIPT脚本前发送的监控JS执行的监控任务,也可以是一些延迟一段时间后需执行的监控任务,还可以是除监控JS执行和监控需执行任务以外的其他监控任务;0063所述监控线程单元,用于执行对监控任务的监控,并在JS执行时间到时对未结束执行的JS强制结束JS的执行,在计时时间到时将需要执行的任务放入时间事件队列;这里,所述监控任务包括但不限于对JS执行的监控、对计时
37、时间到后需要执行的任务的监控;0064所述时间事件队列,用于保存监控线程单元放置的需执行任务,并将需执行任务作为事件提供给浏览器内核线程单元执行。0065所述监控线程单元,还用于对除监控JS执行和监控需执行任务以外的其他监控任务进行监控。0066相应的,该手机浏览器服务器端还包括监控任务队列,其中,所述监控任务队列,用于保存所有监控任务,供监控线程单元获取并执行监控;所述浏览器内核线程单元发送指定的监控任务就是将监控任务保存到监控任务队列中,所述监控任务为监控JS执行的监控任务、和/或需执行的任务、和/或其他监控任务。0067该手机浏览器服务器端还包括用户请求队列,用于放置用户请求,并由浏览器
38、内核线程单元选择执行。0068本发明除了可以用于JAVASCRIPT环境外,还可以适用于VBSCRIPT、DOCUMENTOBJECTMODEL、LAYERS和CASCADINGSTYLESHEETS等环境,以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。说明书CN102377799ACN102377809A1/5页11图1说明书附图CN102377799ACN102377809A2/5页12图2说明书附图CN102377799ACN102377809A3/5页13图3说明书附图CN102377799ACN102377809A4/5页14图4图5说明书附图CN102377799ACN102377809A5/5页15图6说明书附图CN102377799A
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1