[OT] Persistant MySQL connections in Apache 2

2002-11-18 Thread Issac Goldstand
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: [EMAIL PROTECTED]
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

2002-11-18 Thread Stas Bekman
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: [EMAIL PROTECTED]
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:[EMAIL PROTECTED]  http://ticketmaster.com http://apacheweek.com
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/