我正在使用 mod _
perl 开发一个应用程序,每次更改代码时都重新启动服务器是一个巨大的拖累。我想仍然使用 mod _
perl 进行开发,因为它是我计划用于实时服务器的。我在文档中没有看到有关如何执行此操作的任何内容。
想法?
我认为 Apache2::Reload 会在一定程度上完成你正在寻找的东西。但是,一旦您准备好将应用程序投入生产,请记住删除所有这些实现。
监控 %INC 中的所有模块
要在请求处理开始时监视和重新加载 %INC 中的所有模块,只需将以下配置添加到您的 httpd.conf:
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
使用连接过滤器和协议模块时,应在 pre_connection 阶段调用 Apache2::Reload:
PerlPreConnectionHandler Apache2::Reload
隐式注册模块
要仅重新加载已向 Apache2::Reload 注册的模块,请将以下内容添加到 httpd.conf:
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
PerlSetVar ReloadAll Off
# ReloadAll defaults to On
然后任何带有该行的模块:
use Apache2::Reload;
当他们改变时将被重新加载。
有关信息,请查看此文档页面。希望这可以帮助。
我使用 Perrin Harkins 通过 PerlMonks 提供的这个解决方案:
将 MaxRequestsPerChild 设置为 1,然后在子节点中加载任何可能发生变化的模块,而不是父节点(显然仅适用于开发环境)。每个请求都会到达一个新的子服务器,它会重新加载所有可能发生变化的模块。