Getting NYTProf to work with vhosts that use PerlOptions +Parent

Tim Bunce <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
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
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.