【发布时间】:2023-02-01 15:52:24
【问题描述】:
我一直在玩 Apache 模块开发并让模块工作。但是,我遇到了在何处正确挂钩以获取我需要的所有数据的问题。
我正在制作一个简单的缓存模块,需要在请求开始时挂钩并检查磁盘上是否存在此 URL 的文件,如果存在,则为该文件提供服务并停止 Apache 的内容生成。
目前,该模块仍继续进入内容生成模式。假设我有一个需要 5 秒才能生成的长时间运行的 PHP 脚本。我会完全忽略调用脚本,只提供磁盘中的静态文件。
此外,如果本地文件不存在,我希望 Apache 执行内容生成(实际上执行 PHP 脚本)并且在将该数据发送到客户端之前我希望有一个适当的挂钩以某种方式获取这些数据并将其保存到本地文件。
我试过ap_hook_fixups、ap_hook_handler和APR_HOOK_LAST、APR_HOOK_LAST以及所有变体,但没有成功。
它总是在请求开始时执行。
我也不想使用任何现有的 Apache 模块。我希望这是一个独立的模块。
有没有办法做这种事情?
【问题讨论】: