c - Apache 服务器中的全局变量

标签 c apache apache-modules

我正在用 C 编写一些 apache (2.2) 模块,我对此很陌生,所以我想知道:

我需要知道是否可以创建一个全局变量,该变量将在 Apache 服务器开始运行时启动。

看,我需要一个主机名列表(这将是“特权的”),这样我收到的每个请求,我都需要检查主机名是否出现在列表中(检查它是否是“特权的” ).

所以列表应该是全局的(这样每个服务器实例都会有相同的列表实例),我需要在开始时初始化它。

如果可能的话,我该怎么做?

谢谢!

最佳答案

虽然不是一个完整的答案,但我确实设法找到了一种拥有全局变量的方法。

我对进程的全局池(pconf 和池)使用了 apr_pool_userdata_getapr_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/

相关文章:

C. 链表。在另一个元素之前插入一个元素

c - 没有 fclose 的 readFile 函数

android - OAuth 2.0 服务器

php - LAMP 服务器 - 一个命令?

c++ - 如何用 C++ 编写 Apache 模块?

c - 在 C 中对 5 个数字的数组使用冒泡排序

c - Netbeans C 代码格式

apache - 如何将 Angular 4 应用程序部署到 apache htdocs?

c - 如何在Windows下以可重复的批处理模式编译自创建的Apache模块?

apache - XSendFile将不提供Apache 2.2中的文件