use*_*810 5 c apache apache-modules
我正在用 C 编写一些 apache (2.2) 模块,而且我对它很陌生,所以我想知道:
我需要知道是否可以创建一个全局变量,该变量将在 apache 服务器开始运行时启动。
看,我需要有一个主机名列表(这将是“特权”),以便我收到的每个请求,我都需要检查主机名是否出现在列表中(以检查它是否是“特权”)。
所以列表应该是全局的(这样每个服务器实例都会有相同的列表实例),我需要在开始时初始化它。
如果可能的话,我该怎么做?
谢谢!
虽然不是一个完整的答案,但我确实设法找到了一种拥有全局变量的方法。
我将apr_pool_userdata_get和apr_pool_userdata_set方法与进程的全局池(pconf 和池)一起使用。
For further reference:
http://apr.apache.org/docs/apr/0.9/group_apr_pools.html
Examples:
attach static global data to server process pool
char *data = "this is some data";
apr_pool_userdata_setn ((void*) data, "myglobaldata_key", NULL, request->server->process->pool);
Run Code Online (Sandbox Code Playgroud)
attach malloced heap data to 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);
Run Code Online (Sandbox Code Playgroud)
Now retrieve the global data:
char *data;
apr_pool_userdata_get ((void**)&data, "myglobaldata_key", request->server->process->pool);
if (data == NULL) {
// data not set...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3217 次 |
| 最近记录: |