Signatur
Beschreibung
dba_list() liefert eine Liste aller Datenbankverbindungen, die im aktuellen PHP-Prozess über die DBA-Extension geöffnet wurden. Das zurückgegebene Array verwendet die Ressource-IDs (bzw. ab PHP 8 die Ressource-Handles) als Schlüssel und die zugehörigen Dateipfade als Werte.
Die Funktion ist besonders nützlich beim Debugging, um zu überprüfen, welche DBA-Datenbanken momentan offen sind, oder um sicherzustellen, dass keine Ressourcen-Lecks entstehen. Sie erfordert keine Parameter und arbeitet global über alle im aktuellen Script geöffneten DBA-Handles.
Typische Einsatzszenarien sind Diagnose-Skripte, die den Zustand der Datenbankverbindungen inspizieren, sowie Bereinigungsroutinen, die alle offenen Handles ordnungsgemäß schließen sollen.
Rückgabewert
string) darstellen. Sind keine Datenbanken offen, wird ein leeres Array zurückgegeben.Beispiele
Offene DBA-Datenbanken auflisten
<?php
// Zwei Datenbankdateien öffnen
$db1 = dba_open('/tmp/test1.db', 'c', 'gdbm');
$db2 = dba_open('/tmp/test2.db', 'c', 'gdbm');
// Alle offenen Datenbanken auflisten
$offene = dba_list();
print_r($offene);
// Eine Datenbank schließen
dba_close($db1);
// Erneut auflisten
echo "Nach dem Schließen von db1:\n";
print_r(dba_list());
dba_close($db2);
Alle offenen DBA-Handles automatisch schließen
<?php
// Mehrere Datenbanken öffnen
$db1 = dba_open('/tmp/users.db', 'c', 'gdbm');
$db2 = dba_open('/tmp/sessions.db', 'c', 'gdbm');
$db3 = dba_open('/tmp/cache.db', 'c', 'gdbm');
// Verarbeitung ...
// Alle noch offenen Handles ordnungsgemäß schließen
foreach (dba_list() as $handle => $pfad) {
echo "Schließe Datenbank: $pfad\n";
dba_close($handle);
}
echo "Offene Handles: " . count(dba_list());
// Wichtig · Fallstricke
Hinweis zur DBA-Extension: Die DBA-Extension muss beim Kompilieren von PHP aktiviert worden sein (z. B. mit --enable-dba). Welche Handler (gdbm, ndbm, db4 usw.) verfügbar sind, hängt von der jeweiligen PHP-Installation ab und kann mit dba_handlers() geprüft werden.
Ab PHP 8.0 werden DBA-Ressourcen intern als Objekte vom Typ Dba\Connection verwaltet, was sich auf die Darstellung der Schlüssel im zurückgegebenen Array auswirken kann. Die grundlegende Funktionsweise von dba_list() bleibt jedoch identisch.