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

文档序号:8527999阅读:来源:国知局
器提取动态页面请求中的CGI程序信息,根据该CGI程序信息执行对应的CGI程序。
[0050](3) Web服务器执行的CGI程序访问外部接口。当CGI程序访问外部接口时,Web服务器记录动态页面的处理状态,转而执行浏览器发送的其它请求,并监听外部接口是否返回数据。可由不同的Web服务器进程处理浏览器发送的请求和监听外部接口是否返回数据。
[0051](4) Web服务器接收外部接口返回的数据。在监听到外部接口返回数据之后,Web服务器根据动态页面请求的处理状态继续执行其对应的CGI程序。
[0052](5)通过数据导入工具将动态页面请求对应的CGI程序预设近期内访问的数据中访问频率前预设位的数据由数据库导入内存。
[0053](6)当Web服务器执行的CGI程序需访问数据时,优先访问内存,若内存中不存在需访问的数据,再到数据库中查询该数据。
[0054](7) Web服务器将执行CGI程序获得的动态页面返回给发送动态页面请求的浏览器。
[0055]在一个实施例中,上述动态页面请求并发处理方法还包括以下步骤:
[0056]每当接收到浏览器发送的动态页面请求之后,将接收到的动态页面请求的标识插入到待处理请求队列末尾,标记接收到的动态页面请求的处理状态为未处理;
[0057]在监听到某一外部接口已经返回数据之后,将该外部接口对应的动态页面请求的标识插入到待处理请求队列中;
[0058]按照从头至尾的顺序从上述待处理请求队列抽取动态页面请求的标识,并根据对应待处理请求的处理状态处理对应的待处理请求。
[0059]如图3所示,在一个具体实施例中,上述动态页面请求并发处理方法包括以下步骤:
[0060]步骤S301,接收浏览器发送的动态页面请求。
[0061]步骤S302,将动态页面请求的标识插入到待处理请求队列末尾,标记动态页面请求的处理状态为未处理。
[0062]在一个实施例中,可通过读写用于保存待处理请求队列数据的文件I在待处理请求队列中插入数据或抽取数据,并可通过读写用于保存动态页面请求的处理状态的文件2来记录或读取动态页面请求的处理状态。
[0063]步骤S302可生成一条动态页面请求的处理状态记录,处理状态记录可包括动态页面请求的标识、对应的CGI程序正在访问的外部接口名称和对应的CGI程序的当前执行位置等数据项信息。从浏览器新接收的等待处理的动态页面请求的处理状态记录中上述三项数据项信息的内容可分别设置为新接收的动态页面请求的标识、空值、空值。对应的CGI程序正在访问的外部接口名称这一数据项被设置为空值,可表示动态页面请求对应的CGI程序当前没有访问外部接口,而对应的CGI程序的当前执行位置这一数据项被设置为空值,可表示动态页面请求还未被处理。
[0064]进一步的,步骤S302可将生成的处理状态记录保存到如图所示的文件2中。
[0065]步骤S303,按照从头至尾的顺序从待处理请求队列抽取动态页面请求的标识。
[0066]步骤S304,判断对应待处理请求的处理状态是否为未处理,若是,则执行步骤S305,否则,执行步骤S306。
[0067]可根据从待处理请求队列头抽取的动态页面请求的标识在文件2中查找对应的处理状态记录,并判断对应的处理状态记录中对应的CGI程序的当前执行位置这一数据项的内容是否为空值,若是,则可判定从待处理请求队列头抽取的动态页面请求的标识对应动态页面请求的处理状态为未处理,否则,可判定处理状态不是为未处理。
[0068]步骤S305,提取对应动态页面请求中的CGI程序信息,根据CGI程序信息执行对应的CGI程序。
[0069]步骤S306,根据动态页面请求的处理状态继续执行对应的CGI程序。
[0070]可获取动态页面请求标识对应的处理状态记录中的对应的CGI程序的当前执行位置这一数据项的内容,并从对应的当前执行位置起继续往下执行对应的CGI程序。
[0071]步骤S307,判断对应的CGI程序是否访问外部接口并判断对应的CGI程序是否执行完毕。
[0072]步骤S308,当CGI程序访问外部接口时,记录动态页面请求的处理状态,并记录访问的外部接口信息。
[0073]可在文件2中查找动态页面请求的标识对应的处理状态记录,并设置其中的对应的CGI程序正在访问的外部接口名称和对应的CGI程序的当前执行位置这两个数据项的值为相应内容。
[0074]在一个实施例中,可通过读写用于保存外部接口信息的文件3来记录或读取动态页面请求对应的CGI程序访问的外部接口信息。外部接口信息可包括对应的动态页面请求的标识、对应的CGI程序标识以及外部接口名称等信息。
[0075]步骤S309,当CGI程序执行完毕时,向浏览器返回请求结果。
[0076]当动态页面请求对应的CGI程序执行完毕后,可得到执行CGI程序获得的动态页面,从而可将执行CGI程序获得的动态页面返回给发送动态页面请求的浏览器。
[0077]步骤S310,监听动态页面请求对应的CGI程序访问的外部接口是否返回数据。
[0078]在一个实施例中,可从用于保存外部接口信息的文件3获取CGI程序正在访问的外部接口信息,并监听相应的外部接口是否返回数据。
[0079]步骤S311,在监听到外部接口已经返回数据之后,将返回数据的外部接口对应的动态页面请求的标识插入待处理请求队列。
[0080]CGI程序访问的外部接口返回数据后,可从访问的外部接口位置继续往下执行CGI程序的处理流程,因此,可将对应的动态页面请求的标识插入待处理请求队列等待处理。
[0081]在一个实施例中,从浏览器新接收的动态页面请求和已经开始处理但由于对应的CGI程序访问外部接口而被停滞的动态页面请求可分别保存到两个不同的队列。可优先处理已经开始处理的动态页面请求,当新接收的动态页面请求的数量达到阈值时,可丢弃后接收的超过阈值部分的动态页面请求,从而提高并发处理动态页面请求的响应速度。
[0082]在一个实施例中,上述S301?S302、S303?S309、S310?S311可由不同的Web服务器进程执行,或由Web服务器进程启动的不同的线程执行,以提高动态页面请求的并发支持量以及对动态页面请求的响应性能。
[0083]如图4所示,在一个实施例中,一种动态页面请求并发处理系统,包括请求接收模块401、程序信息提取模块402、请求执行模块403、处理状态记录模块404和监听模块405,其中:
[0084]请求接收模块401用于接收浏览器发送的动态页面请求。
[0085]程序信息提取模块402用于提取动态页面请求中的应用程序信息。
[0086]请求执行模块403用于根据该应用程序信息执行对应的应用程序。
[0087]在一个实施例中,程序信息提取模块402在动态页面请求中提取的应用程序信息为CGI程序信息,相应的,请求执行模块403所执行的应用程序为CGI程序。
[0088]一个动态页面请求对应一个CGI程序。动态页面请求携带的网址信息中包含CGI程序目录信息。服务器上的CGI程序在动态页面的网址信息中的目录名称、目录名称在网址信息中的位置以及CGI程序在服务器上的真实路径被预先配置在服务器上的配置文件中(例如,CREN格式服务器上的/etc/httpd.conf )。程序信息提取模块402可查找动态页面请求携带的网址信息中包含的CGI程序目录信息在配置文件中所匹配的目录名称及目录名称位置,并获取对应的真实路径,请求执行模块403可执行服务器上该真实路径下的CGI程序。
[0089]处理状态记录模块404用于当上述应用程序访问外部接口时,记录上述动态页面请求的处理状态。请求执行模块403还用于当上述应用程序访问外部接口时,转而处理浏览器发送的其它请求。
[0090]一条动态页面请求的处理状态记录可包含动态页面请求的标识、对应的应用程序正在访问的外部接口名称和对应的应用程序的当前执行位置等数据项信息。
[0091]监听模块405用于监听上述外部接口是否返回数据。
[0092]请求执行模块403还用于在监听到上述外部接口已经返回数据之后,根据动态页面请求的处理状态继续执行上述应用程序。
[0093]请求执行模块403可获取动态页面请求的处理状态中的对应的应用程序的当前执行位置,从该当前执行位置起继续往下执行对应的应用程序。
[0094]如图5所示,在一个实施例中,上述动态页面请求并处处理系统还包括结果返回模块501,用于当动态页面请求对应的应用程序执行完毕后,将执行应用程序获得的动态页面返回给发送动态页面
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1