"Kind-of" PerlSections, and location question

2002-04-15 Thread Daniel W. Burke


I'm wondering if this is possible at all, and if so, how
to accomplish it...

We have an application we're serving by using the same
set of source code, and setting up different 
sections in the virtual host to set different variables
and path aliases based on who the customer is...

But we have clusters of 6 servers in multiple locations,
with more such setups to come, and with the rate of having
to add sites because of new customers and temp sites for
sales demos, it's becoming difficult to manage so many
setups in this fashon, and restarting apache becomes more
and more an unpleasant thing to do with the more end-users
that are hitting it.

What I'd like to do (if even possible!), is have something
like this:

Have a databae table that stores the information for each
setting, then load it dynamically as a request comes in...
mailer dream code:

$ENV{REQUEST_URI} =~ /^\/(.*?)\//;
$base_path = $1;
if (!exists($Location{$base_path})) {
... do database calls to load necessairy information
... and set as if this was a perl section in an
... httpd.conf file.
}

... then execute as if that location section was always there

If there's a better solution then this, I'm also eager to
hear it :)

Dan.





Re: "Kind-of" PerlSections, and location question

2002-04-15 Thread Steven Lembark


> Have a databae table that stores the information for each
> setting, then load it dynamically as a request comes in...
> mailer dream code:
>
> $ENV{REQUEST_URI} =~ /^\/(.*?)\//;
> $base_path = $1;
> if (!exists($Location{$base_path})) {
>   ... do database calls to load necessairy information
>   ... and set as if this was a perl section in an
>   ... httpd.conf file.
> }
>
> ... then execute as if that location section was always there
>
> If there's a better solution then this, I'm also eager to
> hear it :)

Depending on the rate of server additions you might be
better off loading these at startup time or on a user
signal (e.g., $SIG{USR1} = \&reload_stuff_from_db).

Timestamping the database entry for the site might also
help, since you wouldn't have to re-load the entire thing
every time the site was hit.

--
Steven Lembark   2930 W. Palmer
Workhorse Computing   Chicago, IL 60647
+1 800 762 1582



Re: "Kind-of" PerlSections, and location question

2002-04-15 Thread Daniel W. Burke

On Mon, 15 Apr 2002, Steven Lembark wrote:

> > Have a databae table that stores the information for each
> > setting, then load it dynamically as a request comes in...
> > mailer dream code:
> >
> > $ENV{REQUEST_URI} =~ /^\/(.*?)\//;
> > $base_path = $1;
> > if (!exists($Location{$base_path})) {
> > ... do database calls to load necessairy information
> > ... and set as if this was a perl section in an
> > ... httpd.conf file.
> > }
> >
> > ... then execute as if that location section was always there
> >
>
> Timestamping the database entry for the site might also
> help, since you wouldn't have to re-load the entire thing
> every time the site was hit.
>

what I'm hoping to be able to do should only have to load the
settings once (the first time a request comes in for that location)
for each process, so I'm not too concerned about database access..

The main question I need answered first is, is this even possible?

Dan.





Re: "Kind-of" PerlSections, and location question

2002-04-15 Thread Geoffrey Young


> 
> what I'm hoping to be able to do should only have to load the
> settings once (the first time a request comes in for that location)
> for each process, so I'm not too concerned about database access..
> 
> The main question I need answered first is, is this even possible?


IIRC, Jay Lawrence was playing with this exact thing just a few months 
ago, but I don't know how it turned out.  you might want to ping him 
about it privately if he doesn't catch this thread.

HTH

--Geoff






Re: "Kind-of" PerlSections, and location question

2002-04-15 Thread Perrin Harkins

Daniel W. Burke wrote:
> We have an application we're serving by using the same
> set of source code, and setting up different 
> sections in the virtual host to set different variables
> and path aliases based on who the customer is...
...
> What I'd like to do (if even possible!), is have something
> like this:
> 
> Have a databae table that stores the information for each
> setting, then load it dynamically as a request comes in...

Off the top of my head, there are two simple ways to do this.  The first 
is to generate your httpd.conf using a template and database.  I've done 
this using Template Toolkit, and it worked great.  This also works for 
servers that don't have mod_perl, like proxy servers.

The other way would be to write a PerlTransHandler to look at all 
incoming requests and then decide how to handle them based on your 
database info.  This is better if you need to be able to update it 
without restarting apache.

- Perrin