Start · Sprachen · PHP · Referenz · ocicloselob

ocicloselob

Funktion

Veralteter Alias von <code>OCILob::close()</code> — schließt einen geöffneten LOB-Deskriptor in Oracle.

seit PHP 5.0.0 Kategorie: db

Signatur

ocicloselob(OCILob $lob): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
Inhalt: [Inhalt des CLOB-Feldes]

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.';
?>
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.