mirror of
https://github.com/apache/httpd.git
synced 2026-10-25 10:59:28 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@344971 13f79535-47bb-0310-9956-ffa450edef68
231 lines
8.2 KiB
XML
231 lines
8.2 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
|
|
<!-- $LastChangedRevision$ -->
|
|
|
|
<!--
|
|
Copyright 2005 The Apache Software Foundation or its licensors, as
|
|
applicable.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_dbd.xml.meta">
|
|
|
|
<name>mod_dbd</name>
|
|
<description>Manages SQL database connections</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_dbd.c</sourcefile>
|
|
<identifier>dbd_module</identifier>
|
|
<compatibility>Version 2.1 and later</compatibility>
|
|
|
|
<summary>
|
|
<p><module>mod_dbd</module> manages SQL database connections using
|
|
<a href="http://people.apache.org/~niq/dbd.html">apr_dbd</a>.
|
|
It provides database connections on request to modules
|
|
requiring SQL database functions, and takes care of
|
|
managing databases with optimal efficiency and scalability
|
|
for both threaded and non-threaded MPMs.</p>
|
|
</summary>
|
|
|
|
<section id="pooling"><title>Connection Pooling</title>
|
|
<p>This module manages database connections, in a manner
|
|
optimised for the platform. On non-threaded platforms,
|
|
it provides a persistent connection in the manner of
|
|
classic LAMP (Linux, Apache, Mysql, Perl/PHP/Python).
|
|
On threaded platform, it provides an altogether more
|
|
scalable and efficient <em>connection pool</em>, as
|
|
described in <a href="http://www.apachetutor.org/dev/reslist"
|
|
>this article at ApacheTutor</a>. <module>mod_dbd</module> supersedes
|
|
the modules presented in that article.</p>
|
|
</section>
|
|
|
|
<section id="API"><title>Apache DBD API</title>
|
|
<p><module>mod_dbd</module> exports five functions for other modules
|
|
to use. The API is as follows:</p>
|
|
|
|
<example>
|
|
<pre><code>typedef struct {
|
|
apr_dbd_t *handle;
|
|
apr_dbd_driver_t *driver;
|
|
apr_hash_t *prepared;
|
|
} ap_dbd_t;
|
|
|
|
/* Export functions to access the database */
|
|
|
|
/* acquire a connection that MUST be explicitly closed.
|
|
* Returns NULL on error
|
|
*/
|
|
AP_DECLARE(ap_dbd_t*) ap_dbd_open(apr_pool_t*, server_rec*);
|
|
|
|
/* release a connection acquired with ap_dbd_open */
|
|
AP_DECLARE(void) ap_dbd_close(server_rec*, ap_dbd_t*);
|
|
|
|
/* acquire a connection that will have the lifetime of a request
|
|
* and MUST NOT be explicitly closed. Return NULL on error.
|
|
* This is the preferred function for most applications.
|
|
*/
|
|
AP_DECLARE(ap_dbd_t*) ap_dbd_acquire(request_rec*);
|
|
|
|
/* acquire a connection that will have the lifetime of a connection
|
|
* and MUST NOT be explicitly closed. Return NULL on error.
|
|
*/
|
|
AP_DECLARE(ap_dbd_t*) ap_dbd_cacquire(request_rec*);
|
|
|
|
/* Prepare a statement for use by a client module */
|
|
AP_DECLARE(void) ap_dbd_prepare(server_rec*, const char*, const char*);
|
|
|
|
/* Also export them as optional functions for modules that prefer it */
|
|
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_open, (apr_pool_t*, server_rec*));
|
|
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_close, (server_rec*, ap_dbd_t*));
|
|
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_acquire, (request_rec*));
|
|
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_cacquire, (conn_rec*));
|
|
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_prepare, (server_rec*, const char*, const char*));
|
|
</code></pre>
|
|
</example>
|
|
</section>
|
|
|
|
<section id="prepared"><title>SQL Prepared Statements</title>
|
|
<p><module>mod_dbd</module> supports SQL prepared statements on behalf
|
|
of modules that may wish to use them. Each prepared statement
|
|
must be assigned a name (label), and they are stored in a hash:
|
|
the <code>prepared</code> field of an <code>ap_dbd_t</code>.
|
|
Hash entries are of type <code>apr_dbd_prepared_t</code>
|
|
and can be used in any of the apr_dbd prepared statement
|
|
SQL query or select commands.</p>
|
|
|
|
<p>It is up to dbd user modules to use the prepared statements
|
|
and document what statements can be specified in httpd.conf,
|
|
or to provide their own directives and use <code>ap_dbd_prepare</code>.</p>
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDriver</name>
|
|
<description>Specify an SQL driver</description>
|
|
<syntax>DBDriver <var>name</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Selects an apr_dbd driver by name. The driver must be installed
|
|
on your system (on most systems, it will be a shared object or dll).
|
|
For example, <code>DBDriver mysql</code> will select the MySQL
|
|
driver in apr_dbd_mysql.so.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDParams</name>
|
|
<description>Parameters for database connection</description>
|
|
<syntax>DBDParams
|
|
<var>param1</var>=<var>value1</var>[,<var>param2</var>=<var>value2</var>]</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>As required by the underlying driver. Typically this will be
|
|
used to pass whatever cannot be defaulted amongst username,
|
|
password, database name, hostname and port number for connection.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDPersist</name>
|
|
<description>Whether to use persistent connections</description>
|
|
<syntax>DBDPersist 0|1</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>If set to 0, persistent and pooled connections are disabled.
|
|
A new database connection is opened when requested by a client,
|
|
and closed immediately on release. This option is for debugging
|
|
and low-usage servers.</p>
|
|
|
|
<p>The default is to enable a pool of persistent connections
|
|
(or a single LAMP-style persistent connection in the case of a
|
|
non-threaded server), and should almost always be used in operation.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDPrepareSQL</name>
|
|
<description>Define an SQL prepared statement</description>
|
|
<syntax>DBDPrepareSQL <var>"SQL statement"</var> <var>label</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>For modules such as authentication that use repeatedly use a
|
|
single SQL statement, optimum performance is achieved by preparing
|
|
the statement at startup rather than every time it is used.
|
|
This directive prepares an SQL statement and assigns it a label.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDMin</name>
|
|
<description>Minimum number of connections</description>
|
|
<syntax>DBDMin <var>number</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Set the minimum number of connections per process (threaded
|
|
platforms only).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDKeep</name>
|
|
<description>Maximum sustainednumber of connections</description>
|
|
<syntax>DBDKeep <var>number</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Set the maximum number of connections per process to be
|
|
sustained, other than for handling peak demand (threaded
|
|
platforms only).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDMax</name>
|
|
<description>Maximum number of connections</description>
|
|
<syntax>DBDMax <var>number</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Set the hard maximum number of connections per process
|
|
(threaded platforms only).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DBDExptime</name>
|
|
<description>Keepalive time for idle connections</description>
|
|
<syntax>DBDExptime <var>time-in-seconds</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Set the time to keep idle connections alive where the number
|
|
of connections specified in DBDKeep has been exceeded (threaded
|
|
platforms only).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|