Start · Sprachen · PHP · Referenz · dba_close

dba_close

Funktion

Schließt eine geöffnete DBA-Datenbankverbindung und gibt alle zugehörigen Ressourcen frei.

seit PHP 4.0.0 Kategorie: db

Signatur

dba_close(resource $handle): void

Beschreibung

dba_close() beendet die Verbindung zu einer zuvor mit dba_open() oder dba_popen() geöffneten DBA-Datenbank. Alle noch ausstehenden Schreiboperationen werden abgeschlossen und die interne Dateiressource wird freigegeben.

Es ist wichtig, Datenbankverbindungen nach ihrer Verwendung explizit zu schließen, um Dateisperren (Locks) aufzuheben und Ressourcenlecks zu vermeiden. Insbesondere bei Datenbanken, die einen exklusiven Schreibzugriff ("w" oder "n") erfordern, sollte die Verbindung so früh wie möglich geschlossen werden, damit andere Prozesse auf die Datenbank zugreifen können.

Bei persistenten Verbindungen, die mit dba_popen() geöffnet wurden, wird die physische Verbindung nicht sofort getrennt, sondern für spätere Anfragen im selben Prozess wiederverwendet. dba_close() lässt sie für den aktuellen Request jedoch logisch geschlossen erscheinen.

Parameter

Name Typ Default Beschreibung
$handle Pflicht resource Das Datenbankhandle, das von dba_open() oder dba_popen() zurückgegeben wurde.

Rückgabewert

Typ
void
Beschreibung
Gibt keinen Wert zurück.

Beispiele

Einfaches Öffnen und Schließen einer DBA-Datenbank

<?php
// Datenbank im Schreibmodus öffnen (erstellen falls nicht vorhanden)
$handle = dba_open('/tmp/meine_datenbank.db', 'c', 'gdbm');

if ($handle === false) {
    die('Datenbank konnte nicht geöffnet werden.');
}

// Einen Datensatz einfügen
dba_insert('benutzername', 'max_mustermann', $handle);

// Datenbank wieder schließen und Ressourcen freigeben
dba_close($handle);

echo 'Datenbank erfolgreich geschlossen.';
?>
Datenbank erfolgreich geschlossen.

Lesen und anschließendes Schließen der Datenbank

<?php
// Datenbank im Lesemodus öffnen
$handle = dba_open('/tmp/meine_datenbank.db', 'r', 'gdbm');

if ($handle === false) {
    die('Datenbank konnte nicht geöffnet werden.');
}

// Wert auslesen
$wert = dba_fetch('benutzername', $handle);
if ($wert !== false) {
    echo 'Gefundener Wert: ' . $wert . PHP_EOL;
} else {
    echo 'Schlüssel nicht gefunden.' . PHP_EOL;
}

// Datenbankverbindung schließen
dba_close($handle);
?>
Gefundener Wert: max_mustermann

// Wichtig · Fallstricke

Dateisperren: Viele DBA-Handler (z. B. gdbm, db4) legen beim Öffnen eine Dateisperre an. Wird dba_close() nicht aufgerufen, bleibt diese Sperre bis zum Ende des Skripts aktiv, was andere Prozesse blockieren kann. Besonders bei lang laufenden Skripten oder Webserver-Prozessen sollte die Verbindung daher explizit geschlossen werden.

Persistente Verbindungen: Bei Verbindungen, die mit dba_popen() geöffnet wurden, wird die tatsächliche Datenbankverbindung im Hintergrund gehalten. Ein Aufruf von dba_close() markiert sie lediglich als nicht mehr aktiv für den aktuellen Request.

Ungültige Handles: Der Versuch, dba_close() mit einem bereits geschlossenen oder ungültigen Handle aufzurufen, erzeugt eine PHP-Warnung.