Manuel PHP
Précédent |  | Suivant

# dba_open

(PHP 3>= 3.0.8, PHP 4 , PHP 5)

dba_open -- Ouvre une base de données DBA

## Description

resource dba_open ( string path, string mode, string handler [, ...])

dba_open() établit une connexion à la base repérée par `path` avec le mode `mode` et l'identifiant `handler`.

`path`est le chemin sur votre machine.

`mode` vaut "r" pour lecture seule, "w" pour lecture/écriture, "c" pour lecture/écriture, et création si la base n'existe pas, et "n" pour création, écrasement et accès en lecture/écriture. De plus, vous pouvez choisir la méthode de verrouillage de la base avec le caractère suivant. Utilisez "l" pour vérrouiller la base avec un fichier `.lck`, et "d" pour verrouiller la base elle-même. Il est important que vos application utilisent ces options de manière cohérente. Si vous voulez tester la possibilité d'accès, et ne pas attendre la disponibilité du verrou, vous pouvez ajouter la lettre "t" comme troisième caractère. Lorsque vous êtes absolument certain que votre base ne requiert pas de verrou, vous pouvez utiliser le tiret "-" à la place de "l" ou "d". Lorsque vous n'utilisez ni "d", ni "l" ni "-", dba va verrouiller en mode "d".

`handler` est le nom de l'identifiant qui sera utilisé pour accéder à `path`. Il est passé à dba_popen(). Il reçoit tous les paramètres supplémentaires `...`.

dba_open() retourne une ressource positive ou `FALSE`, respectivement si la base a pu être ouverte ou si la connexion a échoué.

> Note : Il ne peut y avoir qu'un seul type d'écriture dans la base. Lorsque vous utilisez dba sur un serveur web, et que plusieurs requêtes HTTP effectuent des écritures, elles ne peuvent être faites que l'une après l'autre. De même, la lecture durant l'écriture n'est pas possible. L'extension dba utilise un verrou pour éviter ces problèmes. Voici la table de verrouillage :

> Tableau 1. Verrouillage DBA

> déjà ouverte | `mode` = "rl" | `mode` = "rlt" | `mode` = "wl" | `mode` = "wlt" | `mode` = "rd" | `mode` = "rdt" | `mode` = "wd" | `mode` = "wdt"
> --- | --- | --- | --- | --- | --- | --- | --- | ---
> non-ouverte | ok | ok | ok | ok | ok | ok | ok | ok
> `mode` = "rl" | ok | ok | attente | `FALSE` | illegal | illegal | illegal | illegal
> `mode` = "wl" | attente | `FALSE` | attente | `FALSE` | illegal | illegal | illegal | illegal
> `mode` = "rd" | illegal | illegal | illegal | illegal | ok | ok | attente | `FALSE`
> `mode` = "wd" | illegal | illegal | illegal | illegal | attente | `FALSE` | attente | `FALSE`

> ok : Le second appel réussit
> attente : Le second appel attend que dba_close() soit appelé par le premier script
> `FALSE` : Le second appel retourn `FALSE`
> illegal : vous ne devez pas mélanger les options "l" et "d" pour le paramètre `mode`

> Note : Depuis `PHP` 4.3.0, il est possible d'ouvrir la base de données à travers le réseau. Toutefois, dans le cas où des connexions sockets seront utilisées (via HTTP ou FTP), la connexion sera verrouillée, et non pas la ressource. C'est important de le savoir pour comprendre que dans ce cas, le verrouillage sera ignoré, et d'autres solutions doivent être trouvées.

> Note : Le paramètre de verrouillage `mode` et les options "l", "d", "-" et "t" ont été ajoutées en `PHP` 4.3.0. Dans les versions de `PHP` antérieures à la `PHP` 4.3.0, vous deviez utiliser des sémaphores pour éviter les accès concurents à la base de données, hormis pour celles de type GDBM. Voyez le chapitre sur les sémaphores System V.

> Note : Jusqu'en `PHP` 4.3.5, le mode 'c' était inopérant pour de nombreux gestionnaires internes, et tronquait la base au lieu d'ajouter les données à la base existante. De plus, `dbm` et `ndbm` écchoue en mode 'c' dans des configurations typiques (impossible à corriger).

Voir aussi dba_popen() et dba_close().

Précédent | Sommaire | Suivant
dba_nextkey | Niveau supérieur | dba_optimize