XVII. DBA

Ces fonctions sont l ' interface avec les bases de type Berkeley .

C ' est une couche générale pour plusieurs bases de données sur fichiers . En tant que tel , les fonctionnalités sont limitées à une partie des fonctionnalités des bases de données modernes , comme Sleepycat Software' s DB2 (A ne pas confondre avec IBM's DB2 software , qui fonctionne avec ODBC ) .

Le comportement de certaines fonctions dépends de la base de données utilisée . Par exemple dba_optimize( ) et dba_sync( ) n'auront pas le même effet d'une base à l 'autre .

Lors de l' utilisation de la fonction dba_open( ) ou de dba_popen( ) , une des librairies suivante doit être fournie comme argument . La liste complète des librairies supportées par votre configuration est disponible avec la fonction phpinfo( ) . (Pour ajouter le support de l'une de ces librairies , ajouter l'option de configuration --with-XXXX ) .

Tableau 1 . Liste des librairies DBA

Librairie
Dbm est la plus ancienne des base de données de type Berkeley . Il vaut mieux l ' éviter si possible . Les fonctions de compatibilités codées dans DB2 et gdbm ne sont pas supportées , car elles ne sont compatibles qu' au niveau du code source , et ne peuvent pas gérer le format dbm originel . ( --with-dbm ) .
ndbm est un nouveau type de dbm plus flexible . Il a cependant la majorité des limitations du genre . ( --with-ndbm ) .
gdbm est la base dbm GNU . ( --with-gdbm ) .
db2 est DB2 de Sleepycat Software . Elle se décrit comme un " ensemble d'outils qui fournissent une base de données performante , tant pour les applications indépendantes que pour le client / serveur" . ( --with-db2 ) .
DB3 est le DB3 de Sleepycat Software . ( --with-db3 ) .
cdb est " un package rapide , robuste , léger , pour créer et lire des bases de données constantes " . C' est l'auteur de qmail qui l 'a écrit , et elle est disponible ici . Puisque c' est une base constante , elle ne supporte que la lecture . ( --with-cdb ) .


Exemple 1 . Exemple DBA

 
?php

 
$id

 
=

 
dba_open(

 
"

 
/

 
tmp

 
/

 
test.db"

 
,

 
"n"

 
,

 
"db2")

 
;

 
if(!$id

 
)

 
{

 
echo

 
"dba_open

 
a

 
échoué\n"

 
;

 
exit

 
;

 
}

 
dba_replace("key"

 
,

 
"Ceci

 
est

 
un

 
exemple

 
!"

 
,

 
$id)

 
;

 
if(dba_exists("key"

 
,

 
$id)

 
)

 
{

 
echo

 
dba_fetch("key"

 
,

 
$id)

 
;

 
dba_delete("key"

 
,

 
$id)

 
;

 
}

 
dba_close($id)

 
;

 
?





DBA gère les données binaires , et n ' a pas de limites arbitraires . Elle hérite de toutes les limites de la base sous-jacentes .

Toutes les bases de données sur fichiers doivent fournir un moyen de changer le mode d' accès au fichier d 'une base , et si possible , de toutes les bases . Le mode d' accès est généralement passé en 4ème argument à dba_open( ) ou dba_popen( ) .

Vous pouvez accéder à toutes les entrées d' une base d'une manière linéaire , avec les fonctions dba_firstkey( ) et dba_nextkey( ) . Vous ne devez pas modifier une base lorsque vous la traversez ainsi .

Exemple 2 . Passer en revue une base

 
?php

 
/

 
/

 
...ouverture

 
de

 
la

 
base..

 
.

 
$key

 
=

 
dba_firstkey(

 
$id)

 
;

 
while($key

 
!=

 
FALSE

 
)

 
{

 
if(..

 
.

 
)

 
{

 
/

 
/

 
conserver

 
la

 
clé

 
pour

 
faire

 
d'autres

 
opérations

 
plus

 
tard

 
$handle_later[

 
]

 
=

 
$key

 
;

 
    }

 
$key

 
=

 
dba_nextkey($id)

 
;

 
}

 
for($i

 
=

 
0

 
;

 
$i

 
count($handle_later)

 
;

 
$i++

 
)

 
dba_delete($handle_later[$i]

 
,

 
$id)

 
;

 
?





Table des matières
dba_close -- Ferme une base.
dba_delete -- Efface une entrée.
dba_exists -- Vérifie qu'une clé existe.
dba_fetch -- Lit les données liées à une clé.
dba_firstkey -- Lit la première clé.
dba_handlers -- List handlers available
dba_insert -- Insère une entrée.
dba_list -- List all open database files
dba_nextkey -- Lit la clé suivante.
dba_open -- Ouvre une base de données.
dba_optimize -- Optimise une base.
dba_popen -- Ouvre une connexion persistante à une base de données.
dba_replace -- Remplace ou insère une entrée.
dba_sync -- Synchronise une base de données.