mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-18 18:08:54 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@113258 c90b9560-bf6c-de11-be94-00142212c4b1
257 lines
7.2 KiB
XML
257 lines
7.2 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.11 $ -->
|
|
<reference id="ref.dba">
|
|
<title>Database (dbm-style) abstraction layer functions</title>
|
|
<titleabbrev>dba</titleabbrev>
|
|
|
|
<partintro>
|
|
<section id="dba.intro">
|
|
&reftitle.intro;
|
|
<para>
|
|
These functions build the foundation for accessing Berkeley DB
|
|
style databases.
|
|
</para>
|
|
<para>
|
|
This is a general abstraction layer for several file-based databases.
|
|
As such, functionality is limited to a common subset of features
|
|
supported by modern databases such as
|
|
<ulink url="&url.sleepycat;">Sleepycat Software's DB2</ulink>.
|
|
(This is not to be confused with IBM's DB2 software, which is
|
|
supported through the <link linkend="ref.odbc">ODBC functions</link>.)
|
|
</para>
|
|
</section>
|
|
|
|
<section id="dba.requirements">
|
|
&reftitle.required;
|
|
<para>
|
|
The behaviour of various aspects depends on the implementation of the
|
|
underlying database. Functions such as <function>dba_optimize</function>
|
|
and <function>dba_sync</function> will do what they promise for one
|
|
database and will do nothing for others. You have to download and install
|
|
supported dba-Handlers.
|
|
<table>
|
|
<title>List of DBA handlers</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Handler</entry>
|
|
<entry>Notes</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>dbm</literal></entry>
|
|
<entry>
|
|
Dbm is the oldest (original) type of Berkeley DB style
|
|
databases. You should avoid it, if possible. We do not support
|
|
the compatibility functions built into DB2 and gdbm, because
|
|
they are only compatible on the source code level, but cannot
|
|
handle the original dbm format.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ndbm</literal></entry>
|
|
<entry>
|
|
Ndbm is a newer type and more flexible than dbm. It still has
|
|
most of the arbitrary limits of dbm (therefore it is
|
|
deprecated).
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>gdbm</literal></entry>
|
|
<entry>
|
|
Gdbm is the <ulink url="&url.gdbm;">GNU database
|
|
manager</ulink>.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>db2</literal></entry>
|
|
<entry>
|
|
DB2 is <ulink url="&url.sleepycat;">Sleepycat Software's
|
|
DB2</ulink>. It is described as "a programmatic toolkit that
|
|
provides high-performance built-in database support for both
|
|
standalone and client/server applications.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>db3</literal></entry>
|
|
<entry>
|
|
DB3 is <ulink url="&url.sleepycat;">Sleepycat Software's
|
|
DB3</ulink>.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>db4</literal></entry>
|
|
<entry>
|
|
DB4 is <ulink url="&url.sleepycat;">Sleepycat Software's
|
|
DB4</ulink>. This is available since PHP 5.0.0.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>cdb</literal></entry>
|
|
<entry>
|
|
Cdb is "a fast, reliable, lightweight package for creating and
|
|
reading constant databases." It is from the author of qmail and
|
|
can be found <ulink url="&url.cdb;">here</ulink>. Since it is
|
|
constant, we support only reading operations. And since PHP 4.3.0
|
|
we support writing (not updating) through the internal cdb library.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>cdb_make</literal></entry>
|
|
<entry>
|
|
Since PHP 4.3.0 we support creation (not updating) of cdb files
|
|
when the bundeled cdb library is used.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>flatfile</literal></entry>
|
|
<entry>
|
|
This is available since PHP 4.3.0 for compatibility with the deprecated
|
|
<link linkend="ref.dbm">dbm</link> extension only and should be avoided.
|
|
However you may use this where files were created in this format. That
|
|
happens when configure could not find any external library.
|
|
</entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
<para>
|
|
When invoking the <function>dba_open</function> or
|
|
<function>dba_popen</function> functions, one of the
|
|
handler names must be supplied as an argument. The actually
|
|
available list of handlers is displayed by invoking
|
|
<function>phpinfo</function> or <function>dba_handlers</function>.
|
|
</para>
|
|
</section>
|
|
|
|
&reference.dba.configure;
|
|
|
|
<section id="dba.runtime">
|
|
&reftitle.runtime;
|
|
&no.config;
|
|
</section>
|
|
|
|
<section id="dba.resources">
|
|
&reftitle.resources;
|
|
<para>
|
|
The functions <function>dba_open</function> and
|
|
<function>dba_popen</function> return a handle to the specified
|
|
database file to access which is used by all other dba-function calls.
|
|
</para>
|
|
</section>
|
|
|
|
<section id="dba.constants">
|
|
&reftitle.constants;
|
|
&no.constants;
|
|
</section>
|
|
|
|
<section id="dba.examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>DBA example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$id = dba_open ("/tmp/test.db", "n", "db2");
|
|
|
|
if (!$id) {
|
|
echo "dba_open failed\n";
|
|
exit;
|
|
}
|
|
|
|
dba_replace ("key", "This is an example!", $id);
|
|
|
|
if (dba_exists ("key", $id)) {
|
|
echo dba_fetch ("key", $id);
|
|
dba_delete ("key", $id);
|
|
}
|
|
|
|
dba_close ($id);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
DBA is binary safe and does not have any arbitrary limits.
|
|
However, it inherits all limits set by the underlying
|
|
database implementation.
|
|
</para>
|
|
<para>
|
|
All file-based databases must provide a way of setting the file
|
|
mode of a new created database, if that is possible at all. The
|
|
file mode is commonly passed as the fourth argument to
|
|
<function>dba_open</function> or <function>dba_popen</function>.
|
|
</para>
|
|
<para>
|
|
You can access all entries of a database in a linear way by using the
|
|
<function>dba_firstkey</function> and <function>dba_nextkey</function>
|
|
functions. You may not change the database while traversing it.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Traversing a database</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
// ...open database...
|
|
|
|
$key = dba_firstkey ($id);
|
|
|
|
while ($key != false) {
|
|
if (...) { // remember the key to perform some action later
|
|
$handle_later[] = $key;
|
|
}
|
|
$key = dba_nextkey ($id);
|
|
}
|
|
|
|
for ($i = 0; $i < count($handle_later); $i++)
|
|
dba_delete ($handle_later[$i], $id);
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
</partintro>
|
|
|
|
&reference.dba.functions;
|
|
|
|
</reference>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|
|
|