Signatur
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
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);
?>
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);
?>
// 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.