PHP 8.4.1 Released!

dba_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

dba_handlersListet alle verfügbaren Handler auf

Beschreibung

dba_handlers(bool $full_info = false): array

dba_handlers() listet alle Handler auf, die von dieser Erweiterung unterstützt werden.

Parameter-Liste

full_info

Schaltet die Anzeige der kompletten Information im Ergebnis ein/aus.

Rückgabewerte

Gibt ein Array mit Datenbank-Handlern zurück. Falls full_info auf true gesetzt war, ist es ein assoziatives Array mit den Namen der Handler als Schlüssel und deren Versionsinformationen als Wert. Andernfalls ist das Ergebnis ein indiziertes Array mit den Namen der Handler.

Hinweis:

Falls die interne cdb-Bibliothek verwendet wird, sehen Sie cdb und cdb_make.

Beispiele

Beispiel #1 dba_handlers()-Beispiel

<?php

echo "Verfügbare DBA-Handler:\n";
foreach (
dba_handlers(true) as $handler_name => $handler_version) {
// die Versionen "säubern"
$handler_version = str_replace('$', '', $handler_version);
echo
" - $handler_name: $handler_version\n";
}

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Verfügbare DBA-Handler:
 - cdb: 0.75, Revision: 1.3.2.3
 - cdb_make: 0.75, Revision: 1.2.2.4
 - db2: Sleepycat Software: Berkeley DB 2.7.7: (08/20/99)
 - inifile: 1.0, Revision: 1.6.2.3
 - flatfile: 1.0, Revision: 1.5.2.4

add a note

User Contributed Notes 1 note

up
0
cbemerine at gmail dot com
15 years ago
A quick way to see which DBA handlers, without version numbers, that have been built into your version of MySQL on your system, use var_dump with dba_handler() as follows:

<?php
var_dump
( "dba_handlers()" );
?>

Many distros build in these DBA Handlers by default:
array(5) { [0]=> string(3) "cdb" [1]=> string(8) "cdb_make" [2]=> string(3) "db4" [3]=> string(7) "inifile" [4]=> string(8) "flatfile" }

using print and pre tags for readability:

array(5) {

[0]=>

string(3) "cdb"

[1]=>

string(8) "cdb_make"

[2]=>

string(3) "db4"

[3]=>

string(7) "inifile"

[4]=>

string(8) "flatfile"

}

Note there are issues with dba_insert and dba_replace without building for either GDBM or QDBM.
Here are two sources for the list of DBA handlers: (http://www.php-editors.com/php_manual/ref.dba.html and http://dewa03.unep.org/manuals/php_manual/ref.dba.html; )

CDBM & CDB compiles have issues with updates, you can read databases and write new database files, but you will be prevented from using dba_replace() and you may have issues with dba_insert().

NDBM & DBM are depreciated.

DB2, DB3 & DB4 (Berkeley DB Sleepycat Software / Oracle) Have read online about issues with dba_replace() and db4 specifically. Make sure you test your installation for correct usage of all DBA functions.

SDBM, TDB, TinyCDB were not listed on most of the sources I have found online. Those DBA handlers and the names of the developers were listed on the QDBM source forge site. How they interact with dba_replace() I do not know. You should be aware of their existence.

GDBM and QDBM are the only other two DBA handlers I am aware of. Both are reported to allow PHP's dba_replace() function to work correctly so either may be an acceptable option. The following three restrictions of traditional DBM are not issues for either GDBM or QDBM: 1) a process can handle only one database; 2) the size of a key and a value is bounded; 3) a database file is sparse.

DBA handler benchmark compares QDBM, GDBM, NDBM, SDBM, TDB, CDB, BDB, QDBM-BT-ASC, QDBM-BT-RND, BDB-BT-ASC, BDB-BT-RND can be found here: (http://qdbm.sourceforge.net/benchmark.pdf);

QDBM seems to offer significant improvements in speed over the other DBA Handlers, test in your environment to verify the results.
To Top