2009-01-14 81 views
6

我正在用mod _ perl开发一个应用程序,并且每次更改代码时重新启动服务器都是一个巨大的拖动。我想仍然使用mod _ perl进行开发,因为这是我计划用于实时服务器的。我没有看到关于如何做到这一点的文档中的任何内容。如何让mod_perl在更改时重新加载源文件?

想法?

回答

9

我认为Apache2 :: Reload会在某种程度上实现您要找的东西。但是,请记住在您准备将应用投入生产后删除所有此实现。

监视器在%INC所有模块

处监视并请求的处理开始重新放入%INC的所有模块,只需添加以下配置到你的httpd.conf:

PerlModule Apache2::Reload 
PerlInitHandler Apache2::Reload 

当使用连接过滤器和协议模块时,应在预连接阶段调用Apache2 :: Reload:

PerlPreConnectionHandler Apache2::Reload 

注册模块隐含

重加载已经与Apache2的::刷新注册模块,添加以下到httpd.conf:

PerlModule Apache2::Reload 
PerlInitHandler Apache2::Reload 
PerlSetVar ReloadAll Off 
# ReloadAll defaults to On 

那么任何模块与行:

use Apache2::Reload; 

当它们改变时将被重新加载。

查询信息this documentation page。希望这可以帮助。

2

我用这个解决方案,从佩兰哈金斯通过PerlMonks:

设置MaxRequestsPerChild为1,然后加载任何可能改变模块的孩子,不是父(显然仅用于开发环境)。每个请求都会碰到新的子服务器,这会重新加载所有潜在更改的模块。

从 “A better way to see module changes in a running web server

相关问题