Re: PerlRequire script starts two times - how to avoid this
[prev]
[thread]
[next]
[Date index for 2004/11/18]
Stas Bekman wrote on 11/17/04, 10:34 PM:
> Marcin Kosewski wrote:
> > Hi Gurus,
> >
> > I'm using Apache 1.3.33 with mod_perl 1.29. In Apache httpd.conf
> file I'm
> > loading external perl directives using:
> > PerlRequire startup.pl
> >
> > I've checked, that during apache startup 'startup.pl' runs two
> times. And
> > I want, that this script runs only once (because I'm allocating there
> > shared memory areas for later use).
> >
> > So, question is: how to force Apache to run this script exactly once
> during
> > startup.
>
>
http://perl.apache.org/docs/1.0/guide/config.html#Apache_Restarts_Twice_On_Start
>
>
While this does explain why the server needs to restart twice, I thought
I'd mention for Marcin's sake that with 1.3.x $Apache::Server::Starting
and $Apache::Server::ReStarting don't (in my experience) work as expected.
When I put this slightly modified code in my httpd.conf:
<Perl>
open(OUT, ">/tmp/log");
print OUT "Called\n";
print OUT "Server is Starting\n" if $Apache::Server::Starting;
print OUT "Server is ReStarting\n" if $Apache::Server::ReStarting;
close(OUT);
</Perl>
(I write to a temp file instead of STDERR because under apache 1.3
logging to STDERR during startup isn't always redirected...)
The code is _always_ called twice (i.e. when I do a start OR restart)
and $Apache::Server::Starting is always true the first time it's called
but not the second and $Apache::Server::ReStarting is always false.
That is, when starting the server I see:
Called
Server is Starting
Called
And when restarting:
Called
Server is Starting
Called
Because of this, you can't actually tell the difference between starting
and restarting.
I know this has been discussed on the list before, but I just thought
I'd save him the same frustration I went though trying to do this.
--John
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html