动态页面请求并发处理方法和系统的制作方法_3

文档序号:8527999阅读:来源:国知局
请求的浏览器。
[0095]如图6所示,在一个实施例中,上述动态页面请求并发处理系统还包括数据导入模块601,用于将上述动态页面请求对应的应用程序历史访问的数据导入内存。数据导入模块601可通过数据导入工具从数据库中将对应的数据导入内存。
[0096]本实施例中,将动态页面请求对应的应用程序历史访问的数据导入内存,可加快数据访问的速度,缩短执行动态页面请求对应的应用程序的时间,提高对动态页面请求的响应速度,从而可增加并发处理动态页面请求的数量。
[0097]在一个实施例中,数据导入模块601可将对应的应用程序预设近期内访问的数据中访问频率前预设位的数据导入内存。
[0098]本实施例中,上述动态页面请求并发处理系统还包括访问统计模块(图中未示出),用于记录web服务器上各应用程序的数据访问日志,统计预设近期内各应用程序访问的数据的访问频率。
[0099]本实施例中,将动态页面请求对应的应用程序预设近期内访问的数据中访问频率前预设位的数据导入内存,即将动态页面请求对应的应用程序最近经常访问的数据导入内存,既可提高对动态页面请求的响应速度,又可兼顾内存容量有限的问题。
[0100]在一个实施例中,上述动态页面请求并发处理系统还包括待处理请求记录模块(图中未示出),用于每当接收到浏览器发送的动态页面请求之后,将接收到的动态页面请求的标识插入到待处理请求队列末尾;处理状态记录模块404还用于标记接收到的动态页面请求的处理状态为未处理;
[0101]监听模块405还用于在监听到某一外部接口已经返回数据之后,将该外部接口对应的动态页面请求的标识插入到待处理请求队列中;
[0102]请求执行模块403用于按照从头至尾的顺序从上述待处理请求队列抽取动态页面请求的标识,并根据对应待处理请求的处理状态处理对应的待处理请求。
[0103]如图7所示,在一个具体实施例中,一种动态页面请求并发处理系统包括请求接收模块701、第一待处理请求记录模块702、第一处理状态记录模块703、待处理请求获取模块704、处理状态判断模块705、请求执行模块706、执行进度判断模块707、结果返回模块708、外部接口访问判断模块709、第二处理状态记录模块710、外部接口信息记录模块711、监听模块712、第二待处理请求记录模块713,其中:
[0104]请求接收模块701用于接收浏览器发送的动态页面请求。
[0105]第一待处理请求记录模块702用于将接收的动态页面请求的标识插入到待处理请求队列末尾。
[0106]第一处理状态记录模块703用于标记接收的动态页面请求的处理状态为未处理。
[0107]在一个实施例中,第一待处理请求记录模块702可通过读写用于保存待处理请求队列数据的文件在待处理请求队列中插入数据或抽取数据,第一处理状态记录模块703可通过读写用于保存动态页面请求的处理状态的文件来记录或读取动态页面请求的处理状态。
[0108]第一处理状态记录模块703可生成一条动态页面请求的处理状态记录,处理状态记录可包括动态页面请求的标识、对应的CGI程序正在访问的外部接口名称和对应的CGI程序的当前执行位置等数据项信息。从浏览器新接收的等待处理的动态页面请求的处理状态记录中上述三项数据项信息的内容可分别设置为新接收的动态页面请求的标识、空值、空值。对应的CGI程序正在访问的外部接口名称这一数据项被设置为空值,可表示动态页面请求对应的CGI程序当前没有访问外部接口,而对应的CGI程序的当前执行位置这一数据项被设置为空值,可表示动态页面请求还未被处理。
[0109]进一步的,第一处理状态记录模块703可将生成的处理状态记录保存到用于保存动态页面请求的处理状态的文件中。
[0110]待处理请求获取模块704用于按照从头至尾的顺序从待处理请求队列抽取动态页面请求的标识。
[0111]处理状态判断模块705用于判断对应待处理请求的处理状态是否为未处理,若是,则执行步骤S305,否则,执行步骤S306。
[0112]处理状态判断模块705可根据从待处理请求队列头抽取的动态页面请求的标识在保存动态页面请求的处理状态的文件中查找对应的处理状态记录,并判断对应的处理状态记录中对应的CGI程序的当前执行位置这一数据项的内容是否为空值,若是,则可判定从待处理请求队列头抽取的动态页面请求的标识对应动态页面请求的处理状态为未处理,否则,可判定处理状态不是为未处理。
[0113]请求执行模块706用于若待处理请求的处理状态为未处理,则提取对应动态页面请求中的CGI程序信息
[0114]请求执行模块706还用于若待处理请求的处理状态不为未处理,则根据CGI程序信息执行对应的CGI程序,否则根据动态页面请求的处理状态继续执行对应的CGI程序。请求执行模块706可获取动态页面请求标识对应的处理状态记录中的对应的CGI程序的当前执行位置这一数据项的内容,并从对应的当前执行位置起继续往下执行对应的CGI程序。
[0115]执行进度判断模块707用于判断对应的CGI程序是否执行完毕。
[0116]结果返回模块708用于当CGI程序执行完毕时,向浏览器返回请求结果。
[0117]结果返回模块708可将执行CGI程序获得的动态页面返回给发送动态页面请求的浏览器。
[0118]外部接口访问判断模块709用于判断对应的CGI程序是否访问外部接口。
[0119]第二处理状态记录模块710用于当CGI程序访问外部接口时,记录动态页面请求的处理状态。
[0120]第二处理状态记录模块710可在用于保存动态页面请求的处理状态的文件中查找动态页面请求的标识对应的处理状态记录,并设置其中的对应的CGI程序正在访问的外部接口名称和对应的CGI程序的当前执行位置这两个数据项的值为相应内容。
[0121]外部接口信息记录模块711用于当CGI程序访问外部接口时,记录访问的外部接口信息。
[0122]在一个实施例中,外部接口信息记录模块711可通过读写用于保存外部接口信息的文件来记录或读取动态页面请求对应的CGI程序访问的外部接口信息。外部接口信息可包括对应的动态页面请求的标识、对应的CGI程序标识以及外部接口名称等信息。
[0123]监听模块712用于监听动态页面请求对应的CGI程序访问的外部接口是否返回数据。
[0124]在一个实施例中,监听模块712可从用于保存外部接口信息的文件中获取CGI程序正在访问的外部接口信息,并监听相应的外部接口是否返回数据。
[0125]第二待处理请求记录模块713用于在监听到外部接口已经返回数据之后,将返回数据的外部接口对应的动态页面请求的标识插入待处理请求队列。
[0126]CGI程序访问的外部接口返回数据后,可从访问的外部接口位置继续往下执行CGI程序的处理流程,因此,第二待处理请求记录模块713可将对应的动态页面请求的标识插入待处理请求队列等待处理。
[0127]在一个实施例中,从浏览器新接收的动态页面请求和已经开始处理但由于对应的CGI程序访问外部接口而被停滞的动态页面请求可分别保存到两个不同的队列。请求执行模块706可优先处理已经开始处理的动态页面请求,当新接收的动态页面请求的数量达到阈值时,可丢弃后接收的超过阈值部分的动态页面请求,从而提高并发处理动态页面请求的响应速度。
[0128]在一个实施例中,上述701?702所标记的模块、704?711所标记的模块、712?713所标记的模块可由不同的Web服务器进程执行,或由Web服务器进程启动的不同的线程执行,以提高动态页面请求的并发支持量以及对动态页面请求的响应性能。
[0129]上述动态页面请求并发处理方法和系统,在执行动态页面请求对应的应用程序时,若应用程序访问外部接口,则记录动态页面请求的处理状态,转而处理浏览器发送的其它请求,而不是进入阻塞状态,直到外部接口返回数据为止,在处理其它请求的同时,监听外部接口是否返回数据,在监听到外部接口已经返回数据之后,可根据动态页面请求的处理状态继续执行动态页面请求对应的应用程序,从而可实现由单独的服务器支持对动态页面请求的并发处理,而不需要通过增加服务器数量来实现对动态页面请求的并发处理。
[0130]图8为能实现本发明实施例的一个计算机系统1000的模块图。该计算机系统1000只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机系统1000也不能解释为需要依赖于或具有图示的示例性的计算机系统1000中的一个或多个部件的组合。
[0131]图8中示出的计算机系统1000是一个适合用于本发明的计算机系统的例子。具有不同子系统配
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1