perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Prime <adam.pr...@utoronto.ca>
Subject Re: Getting NYTProf to work with vhosts that use PerlOptions +Parent
Date Thu, 29 Apr 2010 03:25:14 GMT
Maybe you could try doing the push_handler for the ChildExitHandler when 
the ChildInitHandler executes?  Just a shot in the dark.

Adam

Tim Bunce wrote:
> This is proving to be tricky.
> 
> If I load Devel::NYTProf::Apache[1] in the main part of httpd.conf then
> I get a profile that includes all the activity *except* for any activity
> in vhosts that use +Parent.
> 
> If I load it inside the VirtualHost section then I get a profile of
> activity within that vhost. Great. Except there's a problem...
> 
> For a profile to be useful it must be terminated properly. Devel::NYTProf
> does that using an END block. Devel::NYTProf::Apache does that using
> 
>     sub child_exit { DB::_finish() }
> 
>     my $s = Apache2::ServerUtil->server;
>     $s->push_handlers(PerlChildExitHandler => \&child_exit);
> 
> That works fine normally, but doesn't work with PerlOptions +Parent.
> I get an error:
>     [error] lookup of 'Devel::NYTProf::Apache::child_exit' failed
> 
> I presume that's because the $s doesn't refer to the vhost "I'm in".
> I can use $s->next (after require Apache2::ServerRec) to iterate over
> the vhosts but I can't see a way to find "my" vhost.
> 
> Is there one?
> 
> What I'm looking for is some way for *a specific vhost perl interpreter*
> to run code at PerlChildExitHandler *in that interpreter*.
> 
> Any ideas?
> 
> Tim.
> 
> p.s. Simply adding END { DB::_finish() } to Devel::NYTProf::Apache gives
> me a profile that ends during server initialization because the vhost
> perl interpreter is initialized using perl_run() and PL_exit_flags |=
> PERL_EXIT_DESTRUCT_END has not been set.  So I've now set PL_exit_flags
> via NYTProf and that's giving me a usable profile for my limited case.
> I've not yet looked-into how to generalise that into code that's work in
> normal (non +Parent) case.
> 
> [1] http://cpansearch.perl.org/src/TIMB/Devel-NYTProf-3.11/lib/Devel/NYTProf/Apache.pm


Mime
View raw message