为apache编写基于C ++ 11线程的模块

时间:2012-08-11 11:34:50

标签: c++ linux apache http c++11

我想在C ++ 11(GCC 4.7)中为Apache编写一个模块,并对其进行配置:

  • 我的代码中的自定义初始化函数在服务器启动时调用一次。
  • 请求处理工作由apache生成为pthreads,所有这些都在同一个进程中。 (不是分叉过程)
  • HTTP请求由来自工作线程的函数调用处理,该函数调用我在代码中编写的阻塞函数。

所有这一切都可能吗?或者Apache不是这样设计的?如果有可能是什么是如何配置它以及构建和附加模块的草图?

1 个答案:

答案 0 :(得分:1)

自从我编写Apache模块以来已经很长时间了,但我不认为模块可以控制孩子是否被生成为新的分支或进程,我认为这是服务器范围的设置。

否则,这一切都很有可能。 Apache提供了可用于在服务器运行时期间的不同时间调用模块代码的钩子。

回到Apache 1.3.x时代,我曾经使用过主要使用Perl的书Writing Apache Modules with Perl and C,但是有足够的C API信息来解决它。 developer docs for Apache 2.4显示了如何使用钩子和控制请求处理。