Re: shared variable between PerlChildInitHandler and PerlResponseHandler

Torsten Förtsch <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
On Thursday, August 19, 2010 09:12:41 Mark Risher wrote:
> I am trying to load a configuration file into a hash during my 
> PerlChildInitHandler and then access the values from PerlResponseHandler. 
> However, even though the process number is the same, it seems that
> variables  changed during the child_init() call revert back to their
> default values when handler() gets called.
> 
> The basic scenario is:
> 
> 
> package StartupLog;
> 
> # the variable I'm testing
> my $sticky = 0;
> 
> sub child_init {
>     $sticky = 1;
>     return 0;
> }
> 
> sub handler {
>     warn __PACKAGE__ . " sticky = $sticky\n";    ### always says "0" but
> should  say "1"
>     return 0;
> }
> 1;
> 
> I've been tearing my hair out for hours on this one. Is this something
> intrinsic  to mod_perl that I'm overlooking? I can't find any good
> examples of loading a config during the PerlChildInit, even though that
> seems like the best time for me to load it.

The only thing where mod_perl may stay in the way here is if you use somehow a 
different interpreter for child_init than for handler. Do you use a threaded 
MPM, e.g. windows? Do you use the +Parent PerlOption in a VHost?

Otherwise, the bug is somewhere in your code. Try to answer a few questions:

1) is the child_init handler called?
2) are handler, child_init and $sticky in the same scope? Forgot "use strict"? 
Try to print \$sticky in both handlers.
3) perhaps your intend was to use a package variable (the warning you print 
out makes me think so)

Torsten Förtsch

-- 
Need professional modperl support? Hire me! (http://foertsch.name)

Like fantasy? http://kabatinte.net
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.