Apache模块初步研究总结.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Apache模块的初步研究总结 作者:徐绿兵 日期:2003/2/11 Apache作为Web服务器,除了可以写CGI程序完成各种Web应用外,Apache也提供了一套API来扩充服务器的功能。Apache本身就是一个由多个模块(module)拼装而成的程序,它的API就是用来写Apache定义的模块的。通过对Apache模块API的研究,总结如下: 一、Apache模块API的特点 都是C的API:Apache模块API是用标准C语言提供的。 模块由一系列回调函数组成:所谓的模块,就是实现一系列模块所需要的回调函数和提供符合预定义数据结构的值。回调函数包括模块初始化(init)、配置信息处理(create_config、merge_config)、文件名转换处理(URI -> filename)、内容处理程序(content handler)、专有日志输出(logger)等,回调函数可以根据需要全部或部分实现。内容处理程序可以输出相应结果。 一个模块可以包含一或多个内容处理程序回调函数:若干个内容处理程序回调函数可以通过一个数据结构(handler_rec)指明。如何激活相应的函数可以通过Apache的配置文件(conf/httpd.conf)指明。内容处理程序可以在访问某个路径时或访问具有某种扩展名的文件时被激活。 支持多种生命期的内存池(memory pool):合理的使用可以防止内存泄露,使用内存池申请的动态空间可以在内容处理程序调用后或Apache正常退出时自动释放。 二、优点 Apache模块是和Apache绑定的,是Apache的一部分,无需每次HTTP请求时都需要加载。 三、缺点 API可能会更新,由此会造成模块做相应的修改。 每次改动模块要重新编译连接Apache(可以通过动态连接方式编译,还没做相应的试验)。 对模块的健壮性要求高,因为模块是服务器的一部分。 多了一套规范,推广难度比CGI大。 四、参考文档 /docs/misc/API.html 五、未来研究设想 目前的研究还是很初步的。如果可能,未来还可以对以下领域做进一步的研究: 通过Apache配置文件配置模块的一些参数,如数据库参数;配置命令各种参数传递方式的使用;配置命令放在VirtaulHost内和VirtualHost外的区别和影响。 模块各阶段回调函数的深入研究,充分利用各种回调函数 子请求(subrequest)的研究 Apache源代码提供的各种操作函数 六、如何书写Apache模块 (本部分代码都可以在 HYPERLINK \l "sample" 模块例子中找到) 1.定义Apache配置文件命令 static const command_rec dump_cmds[] = { { "Dump", /* directive name */ cmd_dump, /* config action routine */ NULL, /* argument to include in call */ OR_OPTIONS, /* where available */ RAW_ARGS, /* arguments */ "Dump directive - any arguments" /* directive description */ }, {NULL} }; 这个结构指明了可以在Apache配置文件(conf/httpd.conf)可使用的配置命令(本例中为“Dump”)、处理该命令的函数名称(本例中为cmd_dump)、传递参数的方式(本例中为RAW_ARGS)。配置命令处理函数的写法参加 HYPERLINK \l "sample" 模块例子。一个模块中可以处理若干个配置命令,结构数组最后一个值为NULL。 2.定义内容处理函数 static const handler_rec dump_handlers[] = { {"dump-handler", dump_handler}, {NULL} }; 这个结构指明了内容处理函数的名称(用于Apache配置文件,本例中为"dump-handler")和内容处理函数的名称(本例中为dump_handler)。一个模块中可以有若干个内容处理函数,结构数组的最后一个值为NULL。 3.定义模块结构 module MODULE_VAR_EXPORT dump_module = { STANDARD_M

文档评论(0)

yjz0327 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档