Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

mod_perl dump your cache!

by habit_forming (Monk)
on Dec 10, 2003 at 22:51 UTC ( [id://313909]=perlquestion: print w/replies, xml ) Need Help??

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

Hey you Monks!

I have mod_perl program called in the usual way (a.k.a) a PerlHandler MyModule statement in httpd.conf... but that works just fine and thus is not my question. I understand that when MyModule loads other modules via require's based on a user's needs those modules get cached. That is all fine and good (very fast too). However, sometimes the modules that MyModule require's change. The people that change the underlying modules do not have access to kill -USR1 `cat /var/run/httpd.pid`.

So here is my quandary... How can I check to see if the file that implements a .pm I already have cached has changed and tell Apache "Hey! Go to disk and grab this .pm! Don't use your cache."

Thanks,
--habit

Replies are listed 'Best First'.
Re: mod_perl dump your cache!
by rob_au (Abbot) on Dec 10, 2003 at 23:11 UTC
    You will want to take a look at the Apache::Reload module which allows modules to be reloaded within the mod_perl environment when they have been changed.

     

    perl -le "print+unpack'N',pack'B32','00000000000000000000001010011011'"

Re: mod_perl dump your cache!
by simonm (Vicar) on Dec 11, 2003 at 01:09 UTC
    The Apache modules provide a good interface to this. (See rob_au's response.)

    If you're curious, you could also try playing with %INC; undef $INC{"My/Module.pm"} will generally cause the next require My::Module to re-do the file in question.

Re: mod_perl dump your cache!
by rdfield (Priest) on Dec 11, 2003 at 11:30 UTC
    If you want this check enabled permanently (for every request, for instance in a dev environment), you can use Apache::StatINC.

    rdfield

Re: mod_perl dump your cache!
by habit_forming (Monk) on Dec 11, 2003 at 16:47 UTC
    As it turns out using Apache::StatINC from within the module loaded by my PerlHandler is exactly what I needed to do.
    use Apache::StatINC; &Apache::StatINC::handler($r);
    Works great!

    Thanks for the input.
    --habit

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://313909]
Approved by VSarkiss
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2024-04-18 22:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found