在同一个apache模块中创建多个处理程序或为每个处理程序分别创建模块的注意事项

时间:2010-08-24 07:42:17

标签: apache apache2 module handlers

我正在编写一个有很多处理程序的应用程序。 我试图看看我是否应该在同一个apache模块中打包这些处理程序,或者为每个处理程序配备一个单独的模块。

我同意这是一个通用的问题,并且取决于我的应用程序,但我想知道我必须做出的一般考虑以及每种方法的权衡。

如果有人能告诉我两种方法的优点/缺点,那将是非常好的。

1 个答案:

答案 0 :(得分:0)

您尚未指定所有这些处理程序是否需要执行某些相互关联的任务,或者它们是否将彼此独立地工作。

我会将相关的处理程序保存在同一个模块中,其余部分保存在自己的模块中。我相信它使服务器的配置变得容易(我们可以根据需要轻松加载/卸载模块),代码库也可以很好地管理。

例如,假设我们需要两个共享一些数据的处理程序,那么我们就可以保留在同一个模块中:

static int my_early_hook(request_rec
*r) {
    req_cfg *mycfg = apr_palloc(r->pool, sizeof(req_cfg));
    ap_set_module_config(r->request_config,
&my_module, mycfg);
    /* set module data */ }

static int my_later_hook(request_rec
*r) {
    req_cfg *mycfg = ap_get_module_config(r->request_config,
&my_module);
    /* access data */ }