Start · Sprachen · PHP · Referenz · ocifreecollection

ocifreecollection

Funktion

Alias von <code>OCICollection::free()</code> — gibt den Speicher einer Oracle-Collection frei.

seit PHP 5.0.0 Kategorie: db

Signatur

ocifreecollection(OCICollection $collection): bool

Beschreibung

ocifreecollection() ist ein prozeduraler Alias der Methode OCICollection::free() und gibt den internen Speicher frei, der einer Oracle-Collection zugeordnet ist. Eine Oracle-Collection ist ein komplexer Oracle-Datentyp (z. B. VARRAY oder TABLE), der über oci_new_collection() erzeugt wurde.

Nach dem Aufruf dieser Funktion ist das Collection-Objekt nicht mehr nutzbar. Es empfiehlt sich, ocifreecollection() aufzurufen, sobald die Collection nicht mehr benötigt wird, um Speicherlecks zu vermeiden – insbesondere bei lang laufenden Prozessen oder Schleifen, die viele Collection-Objekte erzeugen.

Da es sich um einen Alias handelt, ist die Verwendung der objektorientierten Variante $collection->free() bevorzugt. Prozedural geschriebener Legacy-Code kann jedoch weiterhin ocifreecollection() verwenden.

Hinweis: Diese Funktion ist als veraltet (deprecated) markiert und sollte in neuem Code durch die OCI8-Erweiterungsmethode OCICollection::free() ersetzt werden.

Parameter

Name Typ Default Beschreibung
$collection Pflicht OCICollection Ein gültiges OCICollection-Objekt, das zuvor mit oci_new_collection() erstellt wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das Collection-Objekt ungültig ist).

Beispiele

Oracle-Collection erstellen und anschließend freigeben

<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

// Collection vom Typ VARRAY anlegen (Typ muss in der DB existieren)
$collection = oci_new_collection($conn, 'ODCIVARCHAR2LIST', 'SYS');

if ($collection) {
    $collection->append('Wert1');
    $collection->append('Wert2');

    // Verarbeitung ...
    echo "Anzahl Elemente: " . $collection->size() . "\n";

    // Speicher freigeben (prozeduraler Alias)
    ocifreecollection($collection);
    echo "Collection wurde freigegeben.\n";
}

oci_close($conn);
?>
Anzahl Elemente: 2 Collection wurde freigegeben.

Bevorzugte OOP-Variante mit OCICollection::free()

<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

$collection = oci_new_collection($conn, 'ODCIVARCHAR2LIST', 'SYS');

if ($collection) {
    $collection->append('Eintrag A');

    // OOP-Methode bevorzugen statt ocifreecollection()
    $collection->free();
    echo "Speicher freigegeben (OOP-Methode).\n";
}

oci_close($conn);
?>
Speicher freigegeben (OOP-Methode).

// Wichtig · Fallstricke

Deprecated: ocifreecollection() ist ein veralteter Alias. In modernem PHP-Code sollte stattdessen die Methode OCICollection::free() verwendet werden. Der Alias kann in zukünftigen PHP-Versionen entfernt werden.

Nach dem Aufruf von ocifreecollection() darf das Collection-Objekt nicht mehr verwendet werden. Jeglicher weitere Zugriff führt zu einem Fehler. Stellen Sie sicher, dass alle notwendigen Operationen auf der Collection abgeschlossen sind, bevor Sie den Speicher freigeben.