Signatur
Beschreibung
ocicloselob() ist ein veralteter Alias der Methode OCILob::close() und schließt einen zuvor mit Oracle-LOB-Funktionen geöffneten LOB-Deskriptor (Large Object). LOBs werden in Oracle für die Speicherung großer Datenmengen wie Texte (CLOB) oder Binärdaten (BLOB) verwendet.
Nach dem Lesen oder Schreiben von LOB-Daten sollte der Deskriptor ordnungsgemäß geschlossen werden, um Ressourcen auf dem Datenbankserver freizugeben. Nicht geschlossene LOB-Deskriptoren können zu Speicherlecks und unerwarteten Transaktionsproblemen führen.
Hinweis zur Veraltung: Diese Funktion ist ein Alias und gilt als veraltet. Es wird empfohlen, stattdessen die objektorientierte Methode OCILob::close() zu verwenden, da prozedurale Alias-Funktionen in künftigen PHP-Versionen entfernt werden könnten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $lob Pflicht | OCILob | Ein gültiger LOB-Deskriptor, der zuvor mit oci_new_descriptor() oder einer entsprechenden Oracle-Funktion erzeugt und geöffnet wurde. |
Rückgabewert
true zurück, wenn der LOB-Deskriptor erfolgreich geschlossen wurde, andernfalls false.Beispiele
LOB-Deskriptor nach dem Lesen schließen
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stmt = oci_parse($conn, 'SELECT inhalt FROM dokumente WHERE id = :id');
oci_bind_by_name($stmt, ':id', $id);
$id = 42;
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC + OCI_RETURN_LOBS);
$lob = $row['INHALT'];
// LOB-Inhalt lesen
$data = $lob->load();
echo 'Inhalt: ' . htmlspecialchars($data);
// LOB-Deskriptor schließen (veralteter Alias)
ocicloselob($lob);
oci_free_statement($stmt);
oci_close($conn);
?>
Empfohlene objektorientierte Variante mit OCILob::close()
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stmt = oci_parse($conn, 'SELECT bild FROM fotos WHERE id = :id');
oci_bind_by_name($stmt, ':id', $id);
$id = 7;
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC + OCI_RETURN_LOBS);
$lob = $row['BILD'];
// BLOB-Daten lesen
$bildDaten = $lob->load();
file_put_contents('/tmp/bild.jpg', $bildDaten);
// Empfohlene Methode: OCILob::close() statt ocicloselob()
$lob->close();
oci_free_statement($stmt);
oci_close($conn);
echo 'Bild erfolgreich gespeichert.';
?>
// Wichtig · Fallstricke
Veraltung: ocicloselob() ist ein prozeduraler Alias für OCILob::close(). Neue Projekte sollten ausschließlich die objektorientierte OCI8-API verwenden. Prozedurale Aliase können in zukünftigen PHP-Versionen ohne weitere Ankündigung entfernt werden.
Ressourcenmanagement: LOB-Deskriptoren sollten nach der Verwendung immer explizit geschlossen werden. Alternativ kann OCILob::free() verwendet werden, um den Deskriptor vollständig freizugeben. Ein nicht freigegebener LOB-Deskriptor kann die Verbindung zur Oracle-Datenbank unnötig belasten.