Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I have recently install mod_perl 2.0 successfully. I am able to run apps successfully but sometimes I have to restart the server in oder to see the changes in the script. I know I'm missing something obvious. Here is the relative portion of my httpd.conf file. My startup script has all the standard modules.
PerlRequire /usr/local/apache2/conf/startup.pl Alias /perl/ /usr/local/apache2/perl/ <Location /perl> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlSendHeader On Options +ExecCGI PerlSetEnv PERL_DESTRUCT_LEVEL 2 </Location>

Replies are listed 'Best First'.
Re: force to restart server under mod_perl 2.0
by CountZero (Bishop) on Oct 30, 2003 at 19:45 UTC
    This is not a bug but a feature!

    From the book Practical mod_perl p. 260 :

    By default the server won't spend time checking whether any included library modules have been changed. It assumes that they weren't, thus saving the time it takes to stat() the source files from any modules and libraries you use() and require() in your script.

    If the scripts are running under Apache::Registry, the only check that is performed is to see whether your main script has been changed.

    Apache::Registry is of course replaced by ModPerl::Registry in mod_perl 2.

    To make your mod_perl enabled server reload changed modules, use Apache::StatINC or Apache::Reload. These modules carry a heavy performance penalty, so are normally only used on development servers and not on production servers.

    CountZero

    "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law