
联系方式![]()
Similar entries
友情链接导航 |
Apache Module 之在各个 request 之间共享数据(资源)的方法
由 qyb 于 星期四, 2008-10-30 08:46 发表
不论是1.3还是2.x,apache 的模式都包括一个进程服务好多次请求后再退出。现在有一个需求,在每个 request handler 里面希望保存一些数据,这些数据在以后该进程处理其他的 request 中可能还要用到。 最开始我从 request->server->process->pool 顺藤摸瓜看到一个貌似是和进程有关系的资源池。于是仿照 RUN_INIT_ONCE 的apr_pool_userdata_get/apr_pool_userdata_set 来访问资源。这样做的确可以在 request handler 之间共享数据,可是进程退出(apachectl stop)的时候不会去调 cleanup,非常之讨厌。 google 了半天,并参考 apache 自己的 LDAP 模块,发现官方解决方案好像是这样的:
这样在进程退出的时候就自动 cleanup 了。这也是为什么到了 apache 2.0 后就不再提供 child_exit hook 的原因,因为开发者觉得由于有 cleanup 注册的机制,对应 child_init 的 child_exit 就不再有存在的必要。 唯一的疑问就是,request->server->process->pool 和在 child_init 时传入的 pool 是什么关系..... 不过懒得再去寻根究底了,先把需求实现了再说。
|
最新评论
4 小时 49 分钟之前
18 小时 30 分钟之前
19 小时 9 分钟之前
19 小时 20 分钟之前
20 小时 10 分钟之前
1 天 4 小时之前
2 天 3 小时之前
3 天 7 小时之前
4 天 1 小时之前
4 天 2 小时之前