我正在编写一个有一堆处理程序的应用程序。我想看看我是否应该将这些处理程序打包在同一个 apache 模块中,或者为每个处理程序设置一个单独的模块。
我同意这是一个通用问题,并且取决于我的应用程序,但我想知道我必须做出的一般考虑以及每种方法的权衡。
如果有人能告诉我这两种方法的优缺点,那就太好了。
您尚未指定所有这些处理程序是否需要执行一些相互关联的任务,或者它们是否将彼此独立工作。
我会把相关的处理程序放在同一个模块中,其余的放在自己的模块中。我相信它使服务器的配置变得容易(我们可以根据需要轻松加载/卸载模块)并且代码库也保持良好的管理。
例如,假设我们需要两个共享一些数据的处理程序,那么我们可以将 then 保存在同一个模块中:
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 */ }