Estas funciones forman la base para acceder a bases de datos tipo
Berkeley DB.
Esta es una capa general de abstracción para varias bases
de datos basadas en archivos. Como tal, su funcionalidad
está limitada al sub-conjunto común de
características que soportan bases de datos modernas como
DB2 de Sleepycat
Software. (No confundirla con el software DB2 de IBM, el
cual es soportado por medio de las funciones ODBC.)
El comportamiento de varios aspectos depende de la
implementación de la base de datos interna. Funciones como
dba_optimize() y dba_sync()
harán lo que prometen para una base de datos y no
tendrán efecto sobre otras. Es necesario descargar e
instalar los gestores de base de datos soportados.
Tabla 1. Lista de gestores de DBA
| Gestor | Notas |
|---|
| dbm |
Dbm es el tipo más antiguo (original) de bases de
datos tipo Berkeley DB. Es recomendable evitarlo, en lo
posible. No soportamos las funciones de compatibilidad
incorporadas en DB2 y gdbm, ya que solo son compatibles en el
nivel de código fuente, pero no pueden gestionar el
formato dbm original.
|
| ndbm |
Ndbm es un tipo más reciente y flexible que dbm. Aun
tiene muchos de los límites arbitrarios de dbm (y por
lo tanto es obsoleto).
|
| gdbm |
Gdbm es el administrador de bases de
datos GNU.
|
| db2 |
DB2 es el formato DB2 de
Sleepycat Software. Es descrito como "un grupo de
herramientas programáticas que ofrecen soporte
incorporado y de alto rendimiento de bases de datos tanto
para aplicaciones independientes como cliente/servidor".
|
| db3 |
DB3 es DB3 de Sleepycat
Software.
|
| db4 |
DB4 es DB4 de Sleepycat
Software. Este se encuentra disponible desde PHP
4.3.2.
|
| cdb |
Cdb es "un paquete rápido, confiable y ligero para
crear y leer bases de datos constantes." Es del creador de
qmail y puede encontrarse en http://cr.yp.to/cdb.html. Ya que es constante,
sólo soportamos las operaciones de lectura. Y desde
PHP 4.3.0 soportamos escritura (no actualización) a
través de la biblioteca cdb interna.
|
| cdb_make |
A partir de PHP 4.3.0 soportamos la creación (no
actualización) de archivos cdb cuando la biblioteca
cdb incorporada es usada.
|
| flatfile |
Este formato está disponible desde PHP 4.3.0
únicamente para efectos de compatibilidad con la
extensión obsoleta dbm
y debería evitarse. Sin embargo es posible usarlo
cuando los archivos fueron creados en este formato. Eso
ocurre cuando 'configure' no encuentra alguna biblioteca
externa.
|
| inifile |
Este se encuentra disponible desde PHP 4.3.3 y tiene la
capacidad de modificar archivos php.ini desde scripts
PHP. Cuando se trabaja con archivos ini es posible pasar
matrices de la forma array(0=>grupo,1=>nombre_valor) o
cadenas de la forma "[grupo]nombre_valor" en donde el grupo
es opcional. Dado que las funciones
dba_firstkey() y
dba_nextkey() devuelven representaciones
tipo cadena de la clave, existe una nueva función,
dba_key_split(), disponible desde PHP 5
que permite convertir las claves tipo cadena en claves tipo
matriz sin perder FALSE.
|
| qdbm |
Este se encuentra disponible desde PHP 5.0.0. La biblioteca
qdbm puede encontrarse en http://qdbm.sourceforge.net.
|
Cuando se invocan las funciones dba_open() o
dba_popen(), uno de los nombres de gestor debe
entregarse como argumento. La lista de gestores realmente
disponibles se muestra al invocarse phpinfo()
o dba_handlers().
By using the --enable-dba=shared
configuration option you can build a dynamic loadable module to enable PHP
for basic support of dbm-style databases. You also have to add support
for at least one of the following handlers by specifying the
--with-XXXX configure switch to your PHP
configure line.
| Aviso |
After configuring and compiling PHP you must execute the following test
from commandline: php run-tests.php ext/dba. This shows
whether your combination of handlers works. Most problematic are
dbm and ndbm which conflict with
many installations. The reason for this is that on several systems these
libraries are part of more than one other library. The configuration test
only prevents you from configuring malfaunctioning single handlers but not
combinations.
|
Tabla 2. Supported DBA handlers
| Handler | Configure Switch |
|---|
| dbm |
To enable support for dbm add
--with-dbm[=DIR].
Nota:
dbm normally is a wrapper which often results in failures.
This means you should only use dbm if you are sure it works
and if you really need this format.
|
| ndbm |
To enable support for ndbm add
--with-ndbm[=DIR].
Nota:
ndbm normally is a wrapper which often results in failures.
This means you should only use ndbm if you are sure it works
and if you really need this format.
|
| gdbm |
To enable support for gdbm add
--with-gdbm[=DIR].
|
| db2 |
To enable support for db2 add
--with-db2[=DIR].
Nota:
db2 conflicts with db3 and db4.
|
| db3 |
To enable support for db3 add
--with-db3[=DIR].
Nota:
db3 conflicts with db2 and db4.
|
| db4 |
To enable support for db4 add
--with-db4[=DIR].
Nota:
db4 conflicts with db2 and db3.
Nota:
This was added in PHP 4.3.2. In earlier versions of PHP you need to use
--with-db3=DIR with DIR being the
path to db4 library. It is not possible to use db versions starting
from 4.1 with PHP prior to version 4.3.0. Also, the db libraries with
versions 4.1 through 4.1.24 cannot be used in any PHP version.
|
| cdb |
To enable support for cdb add
--with-cdb[=DIR].
Nota:
Since PHP 4.3.0 you can omit DIR to use the bundled cdb library
that adds the cdb_make handler which allows creation of cdb files
and allows to access cdb files on the network using PHP's streams.
|
| flatfile |
To enable support for flatfile add
--with-flatfile.
Nota:
This was added in PHP 4.3.0 to add compatibility with deprecated
dbm extension. Use this handler only
when you cannot install one of the libraries required by the other
handlers and when you cannot use bundled cdb handler.
|
| inifile |
To enable support for inifile add
--with-inifile.
Nota:
This was added in PHP 5.0.0 and allows to read and set microsoft style
.ini files (like the php.ini file).
|
| qdbm |
To enable support for qdbm add
--with-qdbm[=DIR].
Nota:
qdbm conflicts with dbm and gdbm.
|
Nota:
Up to PHP 4.3.0 you are able to add both db2 and db3 handler but only one
of them can be used internally. That means that you cannot have both file
formats. Starting with PHP 5.0.0 there is a configuration check avoid such
misconfigurations.
Esta extensión no tiene directivas de
configuración en php.ini.
Las funciones dba_open() y
dba_popen() devuelven un gestor al archivo de
base de datos a acceder especificado, el cual es usado por todas
las otras llamadas a funciones dba.
Esta extensión no tiene ninguna
constante definida.
Ejemplo 1. Ejemplo de DBA
<?php
$id = dba_open("/tmp/prueba.db", "n", "db2");
if (!$id) { echo "dba_open ha fallado\n"; exit; }
dba_replace("clave", "Este es un ejemplo!", $id);
if (dba_exists("clave", $id)) { echo dba_fetch("clave", $id); dba_delete("clave", $id); }
dba_close($id); ?>
|
|
DBA es seguro con material binario y no tiene límites
arbitrarios. Sin embargo, hereda todos los límites
establecidos por la implementación de la base de datos
interna.
Todas las bases de datos basadas en archivo deben ofrecer una
forma de establecer el modo de archivo de una base de datos
recién creada, si es posible. Un modo de archivo es pasado
por lo general como el cuarto argumento a
dba_open() o dba_popen().
Es posible acceder a todas las entradas de una base de datos en
una forma lineal usando las funciones
dba_firstkey() y
dba_nextkey(). No debe modificar la base de
datos mientras la recorre.
Ejemplo 2. Recorrido de una base de datos
<?php
// ...abrir base de datos...
$clave = dba_firstkey($id);
while ($clave != false) { if (true) { // recordar la clave para realizar alguna accion mas adelante $manejar_despues[] = $clave; } $clave = dba_nextkey($id); }
foreach ($manejar_despues as $val) { dba_delete($val, $id); }
?>
|
|