Start · Sprachen · PHP · Referenz · cubrid_close_request

cubrid_close_request

Funktion

Schließt ein CUBRID-Request-Handle und gibt die damit verbundenen Ressourcen frei.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_close_request(resource $req_identifier): bool

Beschreibung

cubrid_close_request() schließt ein zuvor durch eine CUBRID-Abfragefunktion (z. B. cubrid_execute() oder cubrid_prepare()) geöffnetes Request-Handle. Dadurch werden alle serverseitigen Ressourcen, die mit diesem Handle verknüpft sind, freigegeben.

Das explizite Schließen von Request-Handles ist eine gute Praxis, insbesondere in langlaufenden Skripten oder bei einer großen Anzahl von Abfragen, da CUBRID auf Serverseite Ressourcen für jedes offene Handle reserviert. Durch das gezielte Schließen nicht mehr benötigter Handles lässt sich der Speicherbedarf reduzieren und die Performance verbessern.

Diese Funktion ist funktional identisch mit cubrid_free_result(). Nach dem Aufruf von cubrid_close_request() sollte das Handle nicht mehr verwendet werden, da der Zugriff darauf zu einem Fehler führt.

Parameter

Name Typ Default Beschreibung
$req_identifier Pflicht resource Das Request-Handle, das geschlossen werden soll. Dieses Handle wird von Funktionen wie cubrid_prepare() oder cubrid_execute() zurückgegeben.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Handle erfolgreich geschlossen wurde, oder false im Fehlerfall (z. B. wenn ein ungültiges Handle übergeben wurde).

Beispiele

Einfaches Ausführen einer Abfrage und Schließen des Handles

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindungsfehler: ' . cubrid_error());
}

$req = cubrid_execute($conn, "SELECT * FROM athlete LIMIT 5");

if ($req) {
    while ($row = cubrid_fetch_assoc($req)) {
        echo $row['name'] . PHP_EOL;
    }
    // Handle nach der Nutzung explizit schließen
    cubrid_close_request($req);
} else {
    echo 'Abfragefehler: ' . cubrid_error($conn);
}

cubrid_disconnect($conn);
?>
John Doe Jane Smith ...

Prepared Statement ausführen und Handle freigeben

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindungsfehler: ' . cubrid_error());
}

$req = cubrid_prepare($conn, "SELECT name, gender FROM athlete WHERE nation_code = ?");
cubrid_bind($req, 1, 'GER');
cubrid_execute($req);

while ($row = cubrid_fetch_row($req)) {
    echo $row[0] . ' (' . $row[1] . ')' . PHP_EOL;
}

// Ressourcen freigeben, sobald die Ergebnismenge nicht mehr benötigt wird
$closed = cubrid_close_request($req);
if ($closed) {
    echo 'Request-Handle erfolgreich geschlossen.' . PHP_EOL;
}

cubrid_disconnect($conn);
?>
Thomas Müller (M) Franz Beckenbauer (M) ... Request-Handle erfolgreich geschlossen.

// Wichtig · Fallstricke

Das Schließen des Request-Handles mit cubrid_close_request() gibt nur die serverseitigen Ressourcen frei, beendet aber nicht die Datenbankverbindung selbst. Um die Verbindung zu trennen, muss zusätzlich cubrid_disconnect() aufgerufen werden.

Wird eine Verbindung mit cubrid_disconnect() geschlossen, ohne zuvor alle offenen Handles zu schließen, kann dies je nach CUBRID-Version und Konfiguration zu Ressourcenlecks auf Serverseite führen. Es empfiehlt sich daher, Handles stets explizit zu schließen, bevor die Verbindung getrennt wird.