Start · Sprachen · PHP · Referenz · odbc_close_all

odbc_close_all

Funktion

Schließt alle offenen ODBC-Verbindungen auf einmal.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_close_all(): void

Beschreibung

odbc_close_all() schließt sämtliche aktiven ODBC-Datenbankverbindungen, die im aktuellen PHP-Prozess geöffnet wurden – sowohl persistente als auch nicht-persistente Verbindungen. Die Funktion erwartet keine Parameter und gibt keinen Wert zurück.

Sie eignet sich besonders am Ende eines Skripts, wenn mehrere ODBC-Verbindungen gleichzeitig geöffnet wurden und alle auf einmal freigegeben werden sollen, ohne jede Verbindung einzeln mit odbc_close() zu schließen. Das spart Code und verhindert, dass Verbindungsressourcen versehentlich offen bleiben.

Zu beachten ist, dass persistente Verbindungen (geöffnet mit odbc_pconnect()) normalerweise nicht durch odbc_close() geschlossen werden können – odbc_close_all() schließt jedoch auch diese. Nach dem Aufruf dieser Funktion sind alle Verbindungs-Handles ungültig und dürfen nicht mehr verwendet werden.

In modernen Anwendungen wird empfohlen, Verbindungen explizit zu verwalten und gezielt zu schließen. odbc_close_all() kann aber als Sicherheitsnetz in Fehlerbehandlungsroutinen oder am Skriptende sinnvoll eingesetzt werden.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Mehrere Verbindungen öffnen und alle auf einmal schließen

<?php
// Zwei ODBC-Verbindungen öffnen
$conn1 = odbc_connect('DSN1', 'benutzer1', 'passwort1');
$conn2 = odbc_connect('DSN2', 'benutzer2', 'passwort2');

if ($conn1 && $conn2) {
    // Abfragen durchführen
    $result1 = odbc_exec($conn1, 'SELECT * FROM kunden');
    $result2 = odbc_exec($conn2, 'SELECT * FROM produkte');

    // Ergebnisse verarbeiten ...
    odbc_free_result($result1);
    odbc_free_result($result2);
}

// Alle offenen Verbindungen auf einmal schließen
odbc_close_all();
echo "Alle ODBC-Verbindungen wurden geschlossen.";
?>
Alle ODBC-Verbindungen wurden geschlossen.

Verwendung in einer Fehlerbehandlungsroutine

<?php
function aufraeuemen(): void {
    // Sicherstellen, dass alle Verbindungen geschlossen werden
    odbc_close_all();
    echo "Aufräumen abgeschlossen – alle ODBC-Verbindungen geschlossen.\n";
}

$conn = odbc_connect('MeinDSN', 'user', 'geheim');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

try {
    $result = odbc_exec($conn, 'SELECT COUNT(*) FROM bestellungen');
    if (!$result) {
        throw new RuntimeException('Abfrage fehlgeschlagen: ' . odbc_errormsg());
    }
    while (odbc_fetch_row($result)) {
        echo 'Anzahl Bestellungen: ' . odbc_result($result, 1) . "\n";
    }
    odbc_free_result($result);
} catch (RuntimeException $e) {
    echo 'Fehler: ' . $e->getMessage() . "\n";
} finally {
    aufraeuemen();
}
?>
Anzahl Bestellungen: 42 Aufräumen abgeschlossen – alle ODBC-Verbindungen geschlossen.

// Wichtig · Fallstricke

Persistente Verbindungen: Im Gegensatz zu odbc_close(), welches persistente Verbindungen (odbc_pconnect()) nicht schließt, beendet odbc_close_all() auch persistente Verbindungen. Dies kann in einer Umgebung mit Connection-Pooling unerwünschte Auswirkungen haben, da persistente Verbindungen wiederverwendet werden sollen.

Ungültige Handles: Nach dem Aufruf von odbc_close_all() sind alle zuvor geöffneten Verbindungs-Handles ungültig. Jede weitere Verwendung dieser Handles führt zu einem Fehler. Es empfiehlt sich, die Variablen nach dem Schließen auf null zu setzen.

PHP beendet Verbindungen automatisch: Am Ende eines Skripts schließt PHP nicht-persistente Verbindungen automatisch. odbc_close_all() ist dennoch sinnvoll, wenn Ressourcen früher im Skriptverlauf freigegeben werden sollen.