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