You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Issac Goldstand <ma...@beamartyr.net> on 2002/11/18 11:54:14 UTC

[OT] Persistant MySQL connections in Apache 2

This is really a C API thing, but I was wondering if Apache2::DBI people can
help me shed some light on this...

----- Original Message -----
From: "Kent Fitch"
To: <ap...@covalent.net>
Sent: Monday, November 18, 2002 5:37 AM
Subject: Re: [apache-modules] Persistant MySQL connections in Apache 2


> Hi Issac,
>
> From: "Issac Goldstand"
> Subject: [apache-modules] Persistant MySQL connections in Apache 2
>
>
> > Hi all,
> >   I'm a rookie C API programmer (mod_perl was just so much *easier*
> most of
> > the time :-)), and am working on coding a module to with in my
> front-end
> > Apache 2/mod_proxy server.  The idea of the module is to provide
> access to
> > the front-end server with a list of "blacklisted" IPs which are stored
> in a
> > MySQL database.  So I'm thinking the module's child_init should open
> the
> > connection to the MySQL database and then the access_handler can grab
> the
> > MySQL connection from the child-pool.
>
> Yes, but beware that in a threaded Apache run-time, there could
> be many threads fo execution processing many requests "simultaneously"
> in your child process, so you'll have to arrange to lock the
> connection whilst a thread is using it and possibly have a pool of them.
>
> See "Thread Safety"
> http://httpd.apache.org/docs-2.0/developer/thread_safety.html
>
> > But the problem is that I would *like* for the connections to the
> database
> > be closed before the pool is simply swept clean upon destruction.  I
> would
> > think that that would be a "good thing to do" - maybe I'm wrong...
>
> Yes - you should register a cleanup function on the
> pool you allocate the data structures for the connection(s)
> from in your "init". See these notes on pooling (which may be
> a bit 1.3-ish and hence out of date, but the ideas are relevant):
>
> http://httpd.apache.org/docs-2.0/developer/API.html#pools
>
> and see the apr_pool_cleanup_register api
>
> Kent Fitch


Re: [OT] Persistant MySQL connections in Apache 2

Posted by Stas Bekman <st...@stason.org>.
Issac Goldstand wrote:
> This is really a C API thing, but I was wondering if Apache2::DBI people can
> help me shed some light on this...

I'm not sure what's the Apache2::DBI question, but we (Tim, Hugo, Eric 
at el.) have discussed the Apache::DBI for threaded apps at the last TPC 
and the conclusion was that we need to write a generic Perl Thread::DBI 
module to work with threaded Perl and then use Apache::DBI on top of it.
Some of this was discussed on the dbi-dev list, but as far as I know 
nothing was developed so far. If you want to discuss the design, which 
is not trivial, and implementation, it's probably the best to do that on 
the dbi-dev list.

> ----- Original Message -----
> From: "Kent Fitch"
> To: <ap...@covalent.net>
> Sent: Monday, November 18, 2002 5:37 AM
> Subject: Re: [apache-modules] Persistant MySQL connections in Apache 2
> 
> 
> 
>>Hi Issac,
>>
>>From: "Issac Goldstand"
>>Subject: [apache-modules] Persistant MySQL connections in Apache 2
>>
>>
>>
>>>Hi all,
>>>  I'm a rookie C API programmer (mod_perl was just so much *easier*
>>
>>most of
>>
>>>the time :-)), and am working on coding a module to with in my
>>
>>front-end
>>
>>>Apache 2/mod_proxy server.  The idea of the module is to provide
>>
>>access to
>>
>>>the front-end server with a list of "blacklisted" IPs which are stored
>>
>>in a
>>
>>>MySQL database.  So I'm thinking the module's child_init should open
>>
>>the
>>
>>>connection to the MySQL database and then the access_handler can grab
>>
>>the
>>
>>>MySQL connection from the child-pool.
>>
>>Yes, but beware that in a threaded Apache run-time, there could
>>be many threads fo execution processing many requests "simultaneously"
>>in your child process, so you'll have to arrange to lock the
>>connection whilst a thread is using it and possibly have a pool of them.
>>
>>See "Thread Safety"
>>http://httpd.apache.org/docs-2.0/developer/thread_safety.html
>>
>>
>>>But the problem is that I would *like* for the connections to the
>>
>>database
>>
>>>be closed before the pool is simply swept clean upon destruction.  I
>>
>>would
>>
>>>think that that would be a "good thing to do" - maybe I'm wrong...
>>
>>Yes - you should register a cleanup function on the
>>pool you allocate the data structures for the connection(s)
>>from in your "init". See these notes on pooling (which may be
>>a bit 1.3-ish and hence out of date, but the ideas are relevant):
>>
>>http://httpd.apache.org/docs-2.0/developer/API.html#pools
>>
>>and see the apr_pool_cleanup_register api
>>
>>Kent Fitch
> 


-- 


_____________________________________________________________________
Stas Bekman             JAm_pH      --   Just Another mod_perl Hacker
http://stason.org/      mod_perl Guide   http://perl.apache.org/guide
mailto:stas@stason.org  http://ticketmaster.com http://apacheweek.com
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/