我正在使用mod _
perl开发一个应用程序,并且每次更改代码时重新启动服务器都是一个巨大的阻力。我还想使用mod _
perl进行开发,因为这是我计划用于实时服务器的。我没有在文档中看到有关如何执行此操作的任何内容。
思想?
答案 0 :(得分:9)
我认为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;
当他们改变时会重新加载。
有关信息,请查看this documentation page。希望这会有所帮助。
答案 1 :(得分:2)
我使用这个解决方案,来自Perrin Harkins通过PerlMonks:
将MaxRequestsPerChild设置为1,然后在子项中加载任何可能更改的模块,而不是父项(显然仅适用于开发环境)。每个请求都会遇到一个新的子服务器,它会重新加载所有可能发生变化的模块。
来自“A better way to see module changes in a running web server”