Signatur
Beschreibung
cubrid_lob_close gibt die Ressourcen frei, die durch einen Aufruf von cubrid_lob_get erzeugt wurden. Die Funktion erwartet ein Array von LOB-Bezeichnern, wie es von cubrid_lob_get zurückgegeben wird, und schließt alle darin enthaltenen BLOB- oder CLOB-Objekte.
BLOB (Binary Large Object) und CLOB (Character Large Object) sind spezielle Datentypen in CUBRID, die für die Speicherung großer Binär- oder Textdaten vorgesehen sind. Nach dem Auslesen oder Verarbeiten dieser Daten sollten die zugehörigen LOB-Ressourcen mit dieser Funktion explizit geschlossen werden, um Speicherlecks und nicht freigegebene Datenbankressourcen zu vermeiden.
Der typische Arbeitsablauf sieht vor, zuerst mit cubrid_lob_get die LOB-Objekte abzurufen, anschließend deren Inhalt z. B. per cubrid_lob_export oder cubrid_lob_send zu verarbeiten und danach die Ressourcen mit cubrid_lob_close zu schließen.
Es empfiehlt sich, cubrid_lob_close immer in einem finally-Block oder unmittelbar nach der Verarbeitung aufzurufen, um sicherzustellen, dass die Ressourcen auch im Fehlerfall korrekt freigegeben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $lob_identifier Pflicht | array | Ein Array von LOB-Bezeichnern, wie es von cubrid_lob_get zurückgegeben wird. Enthält die Referenzen auf die zu schließenden BLOB- oder CLOB-Ressourcen. |
Rückgabewert
true zurück, wenn alle LOB-Ressourcen erfolgreich geschlossen wurden. Gibt false zurück, wenn ein Fehler aufgetreten ist, z. B. wenn ungültige LOB-Bezeichner übergeben wurden.Beispiele
BLOB-Daten abrufen, exportieren und Ressourcen schließen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($conn, "SELECT image FROM product WHERE id = 1");
if ($req) {
// LOB-Objekte aus der Ergebnismenge abrufen
$lobs = cubrid_lob_get($conn, $req);
if ($lobs !== false) {
// Inhalt des ersten LOB in eine Datei exportieren
cubrid_lob_export($conn, $lobs[0], '/tmp/product_image.jpg');
echo "Bild erfolgreich exportiert." . PHP_EOL;
// LOB-Ressourcen explizit schließen
if (cubrid_lob_close($lobs)) {
echo "LOB-Ressourcen erfolgreich geschlossen." . PHP_EOL;
} else {
echo "Fehler beim Schließen der LOB-Ressourcen." . PHP_EOL;
}
}
cubrid_close_request($req);
}
cubrid_disconnect($conn);
?>
CLOB-Inhalt lesen und Ressourcen zuverlässig schließen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($conn, "SELECT description FROM article WHERE id = 42");
$lobs = false;
try {
if ($req) {
$lobs = cubrid_lob_get($conn, $req);
if ($lobs !== false) {
// Größe des CLOB-Objekts ermitteln
$size = cubrid_lob_size($lobs[0]);
echo "CLOB-Größe: " . $size . " Bytes" . PHP_EOL;
// Inhalt des CLOB auslesen
$text = cubrid_lob_read($lobs[0], 0, $size);
echo "Inhalt: " . $text . PHP_EOL;
}
}
} finally {
// LOBs im finally-Block sicher schließen
if ($lobs !== false) {
cubrid_lob_close($lobs);
}
if ($req) {
cubrid_close_request($req);
}
cubrid_disconnect($conn);
}
?>
// Wichtig · Fallstricke
Ressourcenverwaltung: Das Vergessen von cubrid_lob_close kann zu Speicherlecks und zur Erschöpfung von Datenbankverbindungen führen, insbesondere bei der Verarbeitung vieler LOB-Objekte in einer Schleife. Verwende daher immer try/finally-Blöcke, um das Schließen sicherzustellen.
Veraltete API: Die cubrid_lob_*-Funktionen gelten als ältere API. Ab neueren CUBRID-Treiberversionen steht die cubrid_lob2_*-Familie zur Verfügung (z. B. cubrid_lob2_close), die objektorientierter und flexibler ist. Für neue Projekte wird die Verwendung der lob2-Funktionen empfohlen.