we should keep this on-list :)
Clinton Gormley wrote:
>>it ought to work, but it should be setting a per-server cleanup instead of a
>>per-request cleanup. see below.
>>
>
>
> Doh!
:)
>
>
>
>>basically cleanups are performed when memory allocated for different parts
>>of the server lifecycle is destroyed. so, httpd allocates memory for the
>>server, per-configuration, per-connection, and per-request. setting up a
>>cleanup handler on each will run the handler whenever the memory pool goes
>>out of scope.
>>
>
>
> Ok - this starts to make sense.
>
> What I'm trying to achieve is :
> - a child init handler which turns on caching (so that the process
> is owned by the right user)
> - a cleanup handler which cleans out the in memory cache at the end
> of each request
>
> I seem to be having a lot of trouble putting them in the same place...
you should be able to put them both in the same place
package My::Foo;
use Apache2::ServerUtil;
Apache2::ServerUtil->server->add_config('PerlChildInitHandler My::init');
Apache2::ServerUtil->server->add_config('PerlCleanupHandler My::cleanup');
sub handler {
...
and provided you PerlModule your package it _should_ work...
>
> In the config file :
> -------------------------------------------------------
> PerlRequire "/opt/apache/sites/obits/conf/startup.pl"
> ## This doesn't work :
> PerlChildInitHandler Obits::Dispatcher::activate_cache
it doesn't? that's very odd. if you can't do that then there's no reason
to have the PerlChildInitHandler, then, is there?
>
> <Location / >
> SetHandler perl-script
> PerlResponseHandler Obits::Dispatcher
> ## This does work :
> PerlCleanupHandler Obits::Dispatcher::cleanup_cache
> --------------------------------------------------------
>
> In the startup file:
> --------------------------------------------------------
> use Apache2::ServerUtil;
> # this works:
> Apache2::ServerUtil->server->push_handlers(
> PerlChildInitHandler => \&activate_cache)
> --------------------------------------------------------
>
> But from here, I can't push a cleanup handler that will be called for
> every request, can I?
via add_config() would be the way I would handle that.
>
> I have it working by using the PerlChildInitHandler in the startup file
> and the PerlCleanupHandler in the apache config, but I would prefer to
> put both of these into the startup file.
using a startup file instead of the package should work, too. see
t/response/TestAPI/add_config.pm for an example.
>
> Is it possible? What am I missing?
just add_config() I think.
>
> thanks for your response Geoff
:)
--Geoff