一种面向cgi服务的通讯方法

文档序号:8339382阅读:214来源:国知局
一种面向cgi服务的通讯方法
【技术领域】
[0001]本发明涉及网络交互技术,具体涉及一种面向CGI服务的通讯方法。
【背景技术】
[0002]HTML是编制网页的基本语言,但是它只能用于静态的网页,要实现动态的网页编程技术,目前主要的动态实现技术:ASP,PHP, JSP, CGI等技术。为解决web服务器和用户之间的交互性,用公用网关接口技术CGI完成动态网页的制作,由web浏览器提交搜索引擎页面的查询语句给web服务器后,web服务器调用搜索引擎程序,把检索到相关结果再回传给web服务器和web浏览器,通过CGI技术成功实现了浏览器和可执行程序之间的动态交互性,达到用户快速获得查询信息的目标。
[0003]epoll是Linux下多路复用1接口 select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合。另一原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核1事件异步唤醒而加入Ready队列的描述符集合即可。可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高出很多。
[0004]大部分web后端程序目前都是用脚本语言写的,需要解释器解释执行,效率较低,实施时采用的是单进程、阻塞1的方式,性能不够高,并且频繁使用内存会造成大量的内存碎片并进而降低性能,容易造成内存泄露。

【发明内容】

[0005]为了克服上述现有技术的不足,本发明提供一种面向CGI服务的通讯方法,用户通过web浏览器向服务器提出请求,服务器系统基于epoll异步模型,对其查询请求进行分析,然后到索引数据库中检索与之相关的文档信息内容,最后将检索结果由CGI程序创建网页展示给用户。
[0006]为了实现上述发明目的,本发明采取如下技术方案:
[0007]一种面向CGI服务的通讯方法,所述方法包括如下步骤:
[0008](I)用户通过web浏览器向服务器提出请求,CGI程序将用户请求转化为URL编码;
[0009](2)服务器解析URL编码并获取内存,基于印oil异步模型对请求进行操作,并到索引数据库中检索相关的文档信息内容;
[0010](3)将检索结果由CGI程序创建HTML页面展示给用户。
[0011]本发明提供的优选技术方案中,所述步骤(2)包括如下步骤:
[0012]A、初始化内存池,读入配置文件;
[0013]B、接收并解析URL编码,从内存池获取可用内存,将URL解码后的数据保存在内存中,根据接收的内容链接服务器;
[0014]C、初始化印oil模型,将请求数据和服务器链接指针地址写到印oil中;
[0015]D、调用epoll_Wait之前检测用户请求是否超时,若超时则返回超时信息给用户,终止执行以下操作;否则将epoll_wait轮询到的数据指针压入处理队列等待处理;
[0016]E、根据队列中请求数据的数据状态,将用户请求转发给索引后台程序,当从索引后台程序返回完整的信息后,对信息进行解析并返回给用户。
[0017]本发明提供的第二优选技术方案中,所述URL编码以name = value的形式进行编石马,格式为 “name I = valuel&name2 = value2&name3 = value3 …”。
[0018]本发明提供的第三优选技术方案中,解析URL编码的方法步骤如下:
[0019](a)数据流中找到字符“ = ”,标志着一个表单变量名的结束;
[0020](b)数据流中找到字符“&”,标志着一个表单变量值的结束;
[0021](c)数据流中将字符“ + ”转化为空格;
[0022](d)数据流中将“ % XX% XX”格式的转化为汉字。
[0023]本发明提供的第四优选技术方案中,步骤E中所述数据状态包括连接、收取和发送。
[0024]与现有技术相比,本发明的有益效果在于:
[0025]本发明采用epoll机制作为网络通讯模型,使用效率高,提高了 web服务器和用户之间的交互性,采用内存池技术,减少了内存碎片,较大地提高了内存使用性能,显著降低了内存的泄露。
【附图说明】
[0026]图1是一种面向CGI通讯方法的原理图
[0027]图2是一种面向CGI通讯方法的流程图
【具体实施方式】
[0028]下面结合附图对本发明作进一步详细说明。
[0029]如图1所示,面向CGI服务的通讯方法,该方法步骤如下:
[0030](I)用户通过web浏览器链接web服务器提出请求,CGI程序将用户请求表单转化为URL编码;
[0031 ] (2) CGI代理模块解析URL编码并获取内存,基于印ol I异步模型对请求进行操作,将信息发送给索引后台,进行检索相关的文档信息内容;
[0032](3)将检索结果由CGI程序动态创建HTML页面,并返回到web浏览器上。
[0033]如图2所示,CGI代理模块具体工作流程如下:
[0034]A、初始化内存池,读入配置文件;
[0035]B、接收并解析URL编码,从内存池获取可用内存,将URL解码后的数据保存在内存中,根据接收的内容链接服务器;
[0036]C、初始化印oil模型,将请求数据和服务器链接指针地址写到印oil中;
[0037]D、调用epoll_wait之前检测用户请求是否超时,若超时则返回超时信息给用户,终止执行以下操作;否则将epoll_wait轮询到的数据指针压入处理队列等待处理;
[0038]E、根据队列中请求数据的数据状态,将用户请求转发给索引后台程序,当从索引后台程序返回完整的信息后,对信息进行解析并返回给用户。
[0039]URL 编码以 name = value 的形式进行编码,格式为 “namel = valuel&name2 =value2&name3 = value3...,,。
[0040]解析URL编码的方法步骤如下:
[0041](a)数据流中找到字符“ = ”,标志着一个表单变量名的结束;
[0042](b)数据流中找到字符“&”,标志着一个表单变量值的结束;
[0043](c)数据流中将字符“ + ”转化为空格;
[0044](d)数据流中将“ % XX% XX”格式的转化为汉字。
[0045]步骤E中所述数据状态包括连接、收取和发送。
[0046]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的【具体实施方式】进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
【主权项】
1.一种面向CGI服务的通讯方法,其特征在于,所述方法包括如下步骤: (1)CGI程序将用户通过web浏览器向服务器提出的请求转化为URL编码; (2)服务器解析URL编码并放入内存,基于epoll异步模型对请求进行操作,并到索引数据库中检索相关的文档信息内容; (3)CGI程序将检索结果创建HTML页面向用户展示。
2.根据权利要求1所述的面向CGI服务的通讯方法,其特征在于,所述步骤(2)包括如下步骤: A、初始化内存池,读入配置文件; B、接收并解析URL编码,从内存池获取可用内存,将URL解码后的数据保存在内存中,根据接收的内容链接服务器; C、初始化epoll模型,将请求数据和服务器链接指针地址写到印oil中; D、调用epoll_Wait之前检测用户请求是否超时,若超时则返回超时信息给用户,终止执行以下操作;否则将epoll_wait轮询到的数据指针压入处理队列等待处理; E、根据队列中请求数据的数据状态,将用户请求转发给索引后台程序,当从索引后台程序返回完整的信息后,对信息进行解析并返回给用户。
3.根据权利要求1所述的面向CGI服务的通讯方法,其特征在于,所述URL编码以name=value 的形式进行编码,格式为“namel = valuel&name2 = value2&name3 = value3…”。
4.根据权利要求2所述的面向CGI服务的通讯方法,其特征在于,解析URL编码的方法步骤如下: (a)数据流中找到字符“= ”,标志着一个表单变量名的结束; (b)数据流中找到字符“&”,标志着一个表单变量值的结束; (c)数据流中将字符“+ ”转化为空格; (d)数据流中将“% XX% XX”格式的转化为汉字。
5.根据权利要求2所述的面向CGI服务的通讯方法,其特征在于,步骤E中所述数据状态包括连接、收取和发送。
【专利摘要】本发明提供一种面向CGI服务的通讯方法,用户通过web浏览器向服务器提出请求,CGI程序将用户请求转化为URL编码,服务器解析URL编码并放入内存,基于epoll异步模型对请求进行操作,并到索引数据库中检索相关的文档信息内容,将检索结果由CGI程序创建HTML页面展示给用户。提高了web服务器和用户之间的交互性,采用内存池技术,减少了内存碎片,提高了内存的使用性能。
【IPC分类】G06F9-44, G06F17-30
【公开号】CN104657135
【申请号】CN201510058580
【发明人】赵军
【申请人】北京中搜网络技术股份有限公司
【公开日】2015年5月27日
【申请日】2015年2月4日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1