dba_open

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_openOuvre une base de données DBA

Description

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): Dba\Connection|false

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

Liste de paramètres

path
Chemin sur le système de fichiers.
mode
Il 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. La base de données est créée en mode BTree ; les autres modes (comme Hash ou Queue) ne sont pas supportés. De plus, il est possible de choisir la méthode de verrouillage de la base avec le caractère suivant. Il est possible d'utiliser l pour verrouiller la base avec un fichier .lck, ou d pour verrouiller la base elle-même. Il est important que les applications utilisent ces options de manière cohérente. Si l'on veut tester la possibilité d'accès, et ne pas attendre la disponibilité du verrou, il est possible d'ajouter la lettre t comme troisième caractère. Lorsque l'on est absolument certain que la base ne requiert pas de verrou, il est possible d'utiliser le tiret - à la place de l ou d. Lorsque l'on n'utilise ni d, ni l ni -, dba va verrouiller en mode d.

Note:

Il ne peut y avoir qu'un seul type d'écriture dans la base. Lorsque l'on utilise 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 :

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 illégal illégal illégal illégal
mode = "wl" attente false attente false illégal illégal illégal illégal
mode = "rd" illégal illégal illégal illégal ok ok attente false
mode = "wd" illégal illégal illégal illégal attente false attente false
  • ok: Le second appel réussit.
  • wait: Le second appel attend que dba_close() soit appelé par le premier script.
  • false: Le second appel retourne false.
  • illégal: il ne faut pas mélanger les options "l" et "d" pour le paramètre mode.

handler
Le nom du gestionnaire qui doit être utilisé pour accéder à path. C'est passé à tous les paramètres facultatifs donnés à dba_open() et peut agir au nom d'eux. Si le paramètre handler est null, alors le gestionnaire par défaut est invoqué.
permission
Paramètre facultatif de type entier qui est passé au pilote. Il a la même signification que le paramètre permissions de la fonction chmod(), et a une valeur par défaut de 0644. Les pilotes db1, db2, db3, db4, dbm, gdbm, ndbm et lmdb prennent en charge le paramètre permission. Le pilote lmdb supporte deux paramètres additionnels. Le premier permet de définir le $filemode (voir description ci-dessus), et le second permet de définir la $mapsize, dont la valeur devrait être un multiple de la taille de page du système d'exploitation, ou zéro pour utiliser la mapsize par défaut. Le paramètre $mapsize est supporté à partir de PHP 7.3.14 et 7.4.2, respectivement.
map_size
Paramètre facultatif de type entier qui est passé au pilote. Sa valeur doit être un multiple de la taille de page du système d'exploitation, ou zéro pour utiliser la taille de mappage par défaut. Seul le pilote lmdb accepte le paramètre map_size.
flags
Drapeaux à passer aux pilotes de base de données. Si null, les drapeaux par défaut seront fournis. Actuellement, seul le pilote LMDB prend en charge les drapeaux suivants : DBA_LMDB_USE_SUB_DIR et DBA_LMDB_NO_SUB_DIR.

Valeurs de retour

Retourne une instance Dba\Connection en cas de succès ou false si une erreur survient.

Erreurs / Exceptions

false est retourné et une erreur de niveau E_WARNING est émise lorsque le paramètre handler est null, mais qu'aucun gestionnaire par défaut n'est disponible.

Historique

Version Description
8.4.0 Retourne désormais une instance de Dba\Connection; auparavant, une resource était retournée.
8.2.0 Le paramètre flags est ajouté.
8.2.0 Le paramètre handler est désormais nullable.
7.3.14, 7.4.2 Le pilote lmdb supporte désormais un paramètre additionnel map_size.

Voir aussi