【发布时间】:2015-03-23 19:21:25
【问题描述】:
我来这里是为了问,因为我在任何地方都找不到任何明确的文档,说明如何编写一个可以读取从执行的任何 3rd 方脚本(例如 PHP 脚本)传递的 HTTP 标头(尤其是状态代码)的模块从阿帕奇。到目前为止,我可以使用此代码获取 HTML 输出的内容并在 error_log 中记录下来:
static apr_status_t outfilter(ap_filter_t *f,apr_bucket_brigade *pbbIn){
const char *data;
apr_size_t len;
apr_bucket *pbktIn=APR_BRIGADE_FIRST(pbbIn);
apr_bucket_read(pbktIn,&data,&len,APR_BLOCK_READ);
request_rec *r=f->r;server_rec *s=r->server;
ap_log_error(APLOG_MARK, APLOG_CRIT, 0, s, "SAMPLE: DATA READ: %s",data);
return ap_pass_brigade(f->next,pbbIn);
}
static int addfilt(request_rec *r){
ap_add_output_filter("block:filt",NULL,r,r->connection);
}
static void register_hooks(apr_pool_t *pool){
ap_hook_insert_filter(addfilt,NULL,NULL,APR_HOOK_MIDDLE);
ap_register_output_filter("block:filt",outfilter,NULL,AP_FTYPE_RESOURCE);
}
module AP_MODULE_DECLARE_DATA sample_module={
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
register_hooks
}
我想读取状态,因为我想阻止潜在的脚本小子不时以每秒 20 多个请求指向服务器上不存在的项目的请求淹没我的日志。
知道如何读取状态吗?甚至读取整个 http 标头的前 10 或 20 个字节就足够了。
【问题讨论】:
标签: php performance apache http-headers http-status-code-404