apache2 的指令按输入来源分为两种:一种称为 command -directive,是在命令行下通过 -c/-C 参数输入的,一种是 resource -directive ,是在配置文件中配置的。两种指令会通过合并,保存到 指令树 conftree 中。
process_command_config
ap_process_resource_config
指令存取的步骤:
1、读取文件 http.conf 到内存,此操作的结果是树 ap_conftree(config.c 中定义的全局变量) 中。
ap_read_config(process, ptemp, confname, &ap_conftree);
2、遍历 ap_conftree 树,执行注册的指令
ap_walk_config(conftree, &parms, s->lookup_defaults);
以上两步操作中,我们可以通过两个钩子影响程序的行为:
// 读取配置文件到内存后并且解析指令前
ap_hook_pre_config ( my_shm_create_handler, NULL, NULL, APR_HOOK_MIDDLE);
// 解析指令后
ap_hook_post_config ( my_conftree_restore_handler, NULL, NULL, APR_HOOK_MIDDLE);
ap_hook_pre_config ( my_shm_create_handler, NULL, NULL, APR_HOOK_MIDDLE);
// 解析指令后
ap_hook_post_config ( my_conftree_restore_handler, NULL, NULL, APR_HOOK_MIDDLE);
所以你可以用它作为一个 xml解析器。