【问题标题】:Writing a C++11 thread based module for apache为 apache 编写基于 C++11 线程的模块
【发布时间】:2012-08-11 11:34:50
【问题描述】:

我想用 C++11 (GCC 4.7) 为 Apache 编写一个模块并配置它:

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

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

【问题讨论】:

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


    【解决方案1】:

    我已经很久没有写 Apache 模块了,但是我不认为模块可以控制子节点是否作为新的分叉或进程产生,我认为这是一个服务器范围的设置。

    否则,一切皆有可能。 Apache 提供了钩子,您可以使用这些钩子在服务器运行时的不同时间调用模块的代码。

    在 Apache 1.3.x 时代,我曾经使用过 Writing Apache Modules with Perl and C 这本书,它主要专注于使用 Perl,但有足够的关于 C API 的信息来弄清楚它。 developer docs for Apache 2.4 展示了如何使用钩子和控制请求处理。

    【讨论】:

    • 我已经完成了大部分工作。我得出的结论是,使用 MPM 工作模块,理论上可以对其进行配置,使其使用具有多个线程的单个子进程。不过还没有测试过。
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多