Start · Sprachen · PHP · Referenz · cubrid_free_result

cubrid_free_result

Funktion

Gibt den vom CUBRID-Abfrageergebnis belegten Speicher frei und schließt die zugehörige Ressource.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_free_result(resource $result): bool

Beschreibung

cubrid_free_result() gibt den Speicher frei, der durch eine CUBRID-Ergebnisressource belegt wird, die zuvor durch Funktionen wie cubrid_query() oder cubrid_execute() erzeugt wurde. Nach dem Aufruf ist die übergebene Ressource ungültig und darf nicht mehr verwendet werden.

In der Regel werden Ergebnisressourcen automatisch freigegeben, wenn das PHP-Skript endet. Bei großen Ergebnismengen oder in langen Schleifen empfiehlt es sich jedoch, cubrid_free_result() explizit aufzurufen, um den Speicherbedarf frühzeitig zu reduzieren und Speicherlecks zu vermeiden.

Diese Funktion ist besonders nützlich, wenn innerhalb eines Skripts mehrere umfangreiche Abfragen nacheinander ausgeführt werden und der Arbeitsspeicher knapp ist. Sie entspricht in ihrer Funktion dem mysql_free_result()-Pendant aus der älteren MySQL-Erweiterung.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Die CUBRID-Ergebnisressource, die freigegeben werden soll. Diese Ressource wird typischerweise von cubrid_query() oder cubrid_execute() zurückgegeben.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Speicher erfolgreich freigegeben wurde, oder false, wenn ein Fehler auftrat (z. B. wenn eine ungültige Ressource übergeben wurde).

Beispiele

Einfache Abfrage mit anschließender Speicherfreigabe

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if ($conn) {
    $result = cubrid_query('SELECT * FROM city LIMIT 100', $conn);

    if ($result) {
        while ($row = cubrid_fetch_assoc($result)) {
            echo $row['name'] . PHP_EOL;
        }

        // Speicher nach der Verarbeitung freigeben
        cubrid_free_result($result);
    }

    cubrid_disconnect($conn);
}

Mehrere Abfragen mit expliziter Speicherfreigabe in einer Schleife

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if ($conn) {
    $tables = ['city', 'nation', 'athlete'];

    foreach ($tables as $table) {
        $result = cubrid_query("SELECT COUNT(*) AS cnt FROM $table", $conn);

        if ($result) {
            $row = cubrid_fetch_assoc($result);
            echo "Einträge in $table: " . $row['cnt'] . PHP_EOL;

            // Speicher direkt nach Verwendung freigeben, um RAM zu schonen
            cubrid_free_result($result);
        }
    }

    cubrid_disconnect($conn);
}
Einträge in city: 1046 Einträge in nation: 215 Einträge in athlete: 6677

// Wichtig · Fallstricke

Nach dem Aufruf von cubrid_free_result() sollte die freigegebene Ressource nicht mehr verwendet werden, da dies zu Fehlern oder undefiniertem Verhalten führen kann. Es empfiehlt sich, die Variable anschließend auf null zu setzen ($result = null;), um versehentliche Zugriffe zu verhindern.

Für Request-Handle-Ressourcen, die durch cubrid_prepare() erzeugt wurden, sollte stattdessen cubrid_close_request() verwendet werden.