Hi folks.

I'm in the midst of porting a fairly large application over from
mod_perl 1 to mod_perl 2.0.  The app I am currently working on runs as a
 "perl-script" handler using PerlResponseHandler My::Package::Name under
mod_perl 2.

One situation I have is that I sometimes have to do a "long running
process" that may take up to 1-2 minutes to complete.  Under MP1, I
registered a cleanup handler to do this, and sent the user to a "status"
page that would refresh every 5 seconds until the cleanup handler
finished and spit out the results (which the cleanup handler saved in
the db). Getting the cleanup registered and getting it to fire under
mod_perl 2 was simply a matter of changing $r->post_connection(sub { ...
}) to $r->pool->cleanup_register(sub { ... }). So far so good.

The problem with this is I an %ENV variable called "TEST_MODE", set at
startup time (from startup.pl) which enables certain behavior (e.g.:
allows fake credit card numbers, enables some extra logging statements
etc).  mod_perl 2 unfortunately scrubs %ENV before my cleanup handler
gets called, so $ENV{TEST_MODE} is never set when the cleanup handler
runs.  I don't really see any way to prevent this from happening from
what the docs say.  If anyone has any ideas on how to prevent %ENV from
getting wiped before my cleanup handler fires, or has any suggestions
about how to do a "long running process" under mod_perl 2 while
preserving %ENV from the request, I'd love to hear them ;).

Thanks
Michael Schout

Reply via email to