[cgiapp] New to working with CGI::App and OO perl. Testing under mod_perl. The old inconsistent data with reloads problem.

Ron Savage ron at savage.net.au
Thu Mar 19 17:43:28 EDT 2009


Hi Derek

Michale has answered your question, so I just say the same thing
differently.

(After all, remeber that joke: We're all going down the same road in
different directions...)

On Thu, 2009-03-19 at 08:35 -0700, Derek Walker wrote:
> I'm writing a very basic app under apache + mod_perl.
> 
> I've made the super vanilla instance script and application module.
> 
> =====
> #!/usr/bin/perl
> use lib '/var/www/html/infra';
> use Physical;
> 
> my $app = Physical->new();
> $app->run();

Or, even better:

Physical -> new() -> run()

since $app is never used in any meaningful way.

Years ago I proposed a doc patch on this very issue...

> I'm running into the old chestnut of a problem of how to properly
> 'wrap' a perl application under mod_perl to avoid the shared global
> variable issue (that I only partially understand at this point)

To me this is a design problem, not a coding problem.

Of course it matters what you mean by 'wrap', but I'd suggest stop
thinking in terms of wrapping and start thinking in terms of re-design.

> Reading from a couple of books and web sites I can see the basics of
> how to wrap things to avoid this collision, but I can't quite make it
> work for my basic test app.

Vague guideline:

o Create Physical object.

o In its constructor, create db handle etc which are local to the
Physical object.

o Hence, let the lifetime of the Physical object control the lifetime of
that object's attributes.


-- 
Ron Savage
ron at savage.net.au
http://savage.net.au/index.html




More information about the cgiapp mailing list