Apache模块开发,正确存储变量请求的方式

时间:2012-12-08 06:16:20

标签: c apache apache-modules

目前我将它们存储在全球范围内。这是正确的方法吗?我希望变量与当前请求保持一致,并在请求完成后消失。

例如:

int data1;
int data2;

apr_status_t my_input_filter (ap_filter_t *f, apr_bucket_brigade *bb,
    ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes) {
    if (somecond1) data1 = xyz;
    if (somecond2 & data1 == xya) data2 = abc;

    if (somecond3 && data2 == abc) dosomething();
}

请注意,3 cond可能不会在过滤时一次性发生,它们可能会在不同时刻出现,但具有相同的请求。

1 个答案:

答案 0 :(得分:0)

如果你的模块使用事件或多线程包运行,那么存储在全局变量中是个坏主意。

Apache在请求结构中提供了一个备注字典。用它来存储您的私人数据。