apache 模块
来源:互联网 发布:网络歌曲你是否爱过我 编辑:程序博客网 时间:2024/05/17 16:13
模块的调用方式
模块的调用方式
Apache提供了一些API函数,通过这些函数,apache可以将某一个已经编译好的库文件加载到内存中,并根据模块中指定的调用时机,在适当的时候 进行调用。指定模块的调用时机是通过将某些函数向apache注册,并附带相关的注册信息,如filter模块,则需要指定模块的类型(如: AP_FTYPE_CONTENT_SET;AP_FTYPE_CONNECTION等等),模块加载前的初始化函数,模块名称。 模块注册好后,当满足相关配置条件后,apache会调用相关处理函数进行处理
模块的调用时机
Apache处理请求的进程:监听到一个HTTP请求,创建一个进程,解析数据包,找到用户所请求的资源并发送,处理结束。 在模块化处理后,Apache内部有多个模块函数的调用链表,我们注册的处理函数就在这些链表中。在请求处理的不同阶段,调用不同链表中的模块函数。不同类型的模块函数,所能接收到的数据也是不同的。 常用的模块注册函数: ap_hook_pre_connection 当连接被建立,开始收数据之前,函数被调用。
ap_hook_post_read_request 当apache收到一个请求数据包之后,所注册的模块处理函数被调用
ap_hook_header_parser 用户检查http头的又一次机会。
ap_hook_auth_checker 对用户进行监权
ap_hook_handler。 模块处理函数
httpd.conf中的配置: SetHandler mytrantest(该字段将做为一个入参传入handle函数)
Filter模块的使用方式
filter分为输入和输出两类;输入filter是在请求被处理前,调用模块中的注册函数;输出filter是在请求被处理后调用模块中的注册函数。输入filter可以过滤或替换用户的请求,输出filter可以更改即将要发送给用户的数据。
Filter的注册方式: ap_register_output_filter ap_register_input_filter 这两个函数的第一个参数是filter的名称,该名称要被设置到httpd.conf中,注册的函数才会被调用,设置方法如下: AddOutputFilter HEADERFOOTERA .html
由于apache的模块化处理,使得模块的功能可以任意扩充,模块处理过程中,可以任意修改数据,与其他进程交互。 但使用模块也会使服务器的响应变慢,在模块处理中,拷贝请求数据会消耗较多资源,应尽量少地对请求数据进行拷贝。动态分配的资源需要及时释放。
Input filter 处理请求数据
input filter 有两种方式,其一是只处理请求数据,其二是处理包括请求头在内的所有数据
处理input filter 需要用到bucket 和bucket brigade (bucket 和bucket brigade 是一种内存池机制,一个bucket brigade 里面可以保存多个bucket,处理请求时需要申请bucket 空间,然后将请求数据放在bucket中,然后通过循环处理bucket数据)
ap_table_t 哈希表可以存放key value 键值对,可以通过这个结构获取请求头响应头中的信息,常用接口:
ap_table_get() 获取value
ap_table_set() 设置value
ap_table_add() 添加键值对
request_rec 请求数据的结构体,里面存放请求中的相关数据
ap_filter_t filter 数据结构
apr_bucket
apr_bucket_brigade
- apache 模块
- Apache模块
- Apache模块索引
- apache模块开发实例
- 使用apache模块rewrite_module
- Apache模块 mod_rewrite
- Apache模块 mod_deflate
- 开发Apache模块例子
- Apache 模块开发
- Apache模块 mod_proxy
- linux apache模块开发
- Apache deflate模块配置
- apache开启统计模块
- apache 编译重写模块
- apache 模块请求过程
- Apache配置PHP模块
- Apache 配置 php 模块
- apache 模块的编写
- [20120807]产品体验的资料收录
- c#截屏工具
- hdu football 概率DP
- 为什么使用 Redis及其产品定位
- VS2008数据库操作
- apache 模块
- Web系统下Office文档的处理 之OpenXml应用分类资料
- iPhone SDK新手必读
- 软件外包的形式与质量控制
- 从心里彻底告别大一
- Excel 2007 如何选中图形
- 从内核LED驱动到APK应用实例(旧HAL架构 )
- gzip 和 gunzip 的使用
- hdu 3835 概率DP