我正在用 C 编写一些 apache (2.2) 模块,我对此很陌生,所以我想知道:
我需要知道是否可以创建一个全局变量,该变量将在 Apache 服务器开始运行时启动。
看,我需要一个主机名列表(这将是“特权的”),这样我收到的每个请求,我都需要检查主机名是否出现在列表中(检查它是否是“特权的” ).
所以列表应该是全局的(这样每个服务器实例都会有相同的列表实例),我需要在开始时初始化它。
如果可能的话,我该怎么做?
谢谢!
最佳答案
虽然不是一个完整的答案,但我确实设法找到了一种拥有全局变量的方法。
我对进程的全局池(pconf 和池)使用了 apr_pool_userdata_get
和 apr_pool_userdata_set
方法。
进一步引用:
http://apr.apache.org/docs/apr/0.9/group_apr_pools.html
例子:
将静态全局数据附加到服务器进程池
char *data = "this is some data";
apr_pool_userdata_setn ((void*) data, "myglobaldata_key", NULL, request->server->process->pool);
将分配的堆数据附加到服务器进程池
char *data = strdup("this is some data");
apr_pool_userdata_setn ((void*) data, "myglobaldata_key", (apr_status_t(*)(void *))free, request->server->process->pool);
现在获取全局数据:
char *data;
apr_pool_userdata_get ((void**)&data, "myglobaldata_key", request->server->process->pool);
if (data == NULL) {
// data not set...
}
关于c - Apache 服务器中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6329785/