Start · Sprachen · PHP · Referenz · dba_list

dba_list

Funktion

Gibt ein assoziatives Array aller aktuell geöffneten DBA-Datenbankdateien zurück.

seit PHP 4.3.0 Kategorie: db

Signatur

dba_list(): array

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

Typ
array
Beschreibung
Ein assoziatives Array, bei dem die Schlüssel die internen Ressource-IDs der geöffneten DBA-Handles sind und die Werte die jeweils zugehörigen Dateipfade (als 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);
Array ( [1] => /tmp/test1.db [2] => /tmp/test2.db ) Nach dem Schließen von db1: Array ( [2] => /tmp/test2.db )

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());
Schließe Datenbank: /tmp/users.db Schließe Datenbank: /tmp/sessions.db Schließe Datenbank: /tmp/cache.db Offene Handles: 0

// 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.