The DBI module can make use of the
Apache::DBI module. When the
DBI module loads, it tests whether the environment
variable $ENV{MOD_PERL} is set and whether the
Apache::DBI module has already been loaded. If so,
the DBI module forwards every connect(
) request to the Apache::DBI
module.

When Apache::DBI gets a connect(
) request, it checks whether it already has a handle with
the same connect( ) arguments. If it finds one, it
checks that the connection is still valid using the ping(
) method. If this operation succeeds, the database handle
is returned immediately. If there is no appropriate database handle,
or if the ping( ) method fails,
Apache::DBI establishes a new connection, stores
the handle, and then returns the handle to the caller.

It is important to understand that the pool of connections is not
shared between the processes. Each process has its own pool of
connections.

When you start using
Apache::DBI, there is no need to delete all the
disconnect( )statements from your code. They
won't do anything, because the
Apache::DBI module overloads the
disconnect( ) method with an empty one. You
shouldn't modify your scripts at all for use with
Apache::DBI.