如何更改mod_perl重新加载源文件?

时间:2009-01-14 07:13:54

标签: perl apache mod-perl

我正在使用mod _ perl开发一个应用程序,并且每次更改代码时重新启动服务器都是一个巨大的阻力。我还想使用mod _ perl进行开发,因为这是我计划用于实时服务器的。我没有在文档中看到有关如何执行此操作的任何内容。

思想?

2 个答案:

答案 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