我正在编写一个 Apache 2.4 模块,并且正在使用 MPM 工作程序。
是否有一个我可以使用的钩子在创建新线程时从该线程的上下文中调用?我需要做一些每个线程的初始化。
(更一般地说,是否在某处记录了完整的钩子列表?)
“不”的简短回答,没有这样的钩子用于使用工作 MPM 进行线程初始化。Apache 设计人员建议模块“尽可能与 MPM 无关”。关键概念是模块必须适合输入过滤器 - 内容生成 - 输出过滤器架构,独立于实际管理工作负载的 MPM。
当然,在某些情况下,您需要知道自己在哪个环境中工作艰难
我们正在研究类似的问题。当请求进入时,线程会被触发,它们运行 ap_hook_handler 中定义的钩子,据我所知,那是你的线程必须获得访问权限或分配它需要的资源以服务请求的时候。
有人告诉我 mod_rivet 有一个有趣的解决方案,它创建自己的线程池并让它们与运行请求处理程序的 Apache 线程交换数据。