如何让mod_perl识别我的应用程序的更改?

时间:2009-09-23 16:35:11

标签: perl apache mod-perl

我正在开发服务器上运行apache2 / mod_perl2组合。

当我开发时,我的更改会立即反映在我正在处理的网页中。我假设mod_perl很聪明,并且在更改文件时重新加载文件。

但是现在另一个开发人员正在研究系统的不同部分,并且mod_perl不会选择他们的更改。他必须重新启动apache才能看到他的变化。

有没有办法在我们的开发服务器上禁用缓存,或者让mod_perl获取他的更改?

感谢。

编辑:我正在使用VI直接在开发服务器上编辑文件,另一个开发人员通过samba安装了他们的开发目录,并在Windows中编辑他们的文件。这似乎是阻止mod_perl获取更改的差异。

3 个答案:

答案 0 :(得分:8)

我刚刚阅读了一篇很好的博客文章,总结了实现这一目标的所有可能方法:How not to restart mod_perl servers作者:Jonathan Swartz

答案 1 :(得分:2)

其他开发人员到底改变了什么?

要在模块更改后重新加载,您可以使用Apache2::Reload。 (虽然在考虑在生产中使用它之前看Performance Issues。)

即使没有它,mod_perl会在更改时重新加载cgi脚本;如果你在谈论cgi脚本,我不知道其他开发者是否可以将其关闭。

答案 2 :(得分:0)

因为它仅用于开发,所以如何杀死所有子进程并让父apache进程重新生成?

kill -9 $(ps axf | grep httpd | egrep -e ' S ' | cut -b1-5 | paste -s -d ' ')
  • 在我的环境中,上面的命令适用于我的盒子,你的里程会有所不同。

它无论如何都不是一个优雅的解决方案,但是,它比完全apache重启更快。