Start · Sprachen · PHP · Referenz · cubrid_send_glo

cubrid_send_glo

Funktion

Liest Daten aus einem CUBRID-GLO-Objekt (Genaral Large Object) und gibt sie direkt aus.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_send_glo(resource $conn_identifier, string $oid): bool

Beschreibung

cubrid_send_glo liest die in einem GLO-Objekt (General Large Object) gespeicherten Daten aus der CUBRID-Datenbank und sendet diese direkt an den Ausgabe-Puffer. GLO-Objekte dienen in CUBRID dazu, große binäre oder textuelle Datenmengen (z. B. Bilder, Dokumente, Mediendateien) in der Datenbank zu speichern.

Die Funktion eignet sich besonders dann, wenn der Inhalt eines GLO-Objekts unmittelbar an den Browser oder einen anderen Ausgabe-Stream übertragen werden soll, ohne ihn zunächst vollständig in eine PHP-Variable laden zu müssen. Dazu wird die OID (Object Identifier) des betreffenden GLO-Objekts übergeben.

Hinweis: Diese Funktion ist veraltet und wurde in neueren Versionen der CUBRID PHP-Erweiterung durch modernere API-Methoden ersetzt. Sie sollte in neuen Projekten nicht mehr eingesetzt werden.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die CUBRID-Verbindungsressource, die über cubrid_connect oder eine vergleichbare Verbindungsfunktion erzeugt wurde.
$oid Pflicht string Die OID (Object Identifier) des GLO-Objekts in der CUBRID-Datenbank, dessen Inhalt gelesen und ausgegeben werden soll. Die OID hat typischerweise die Form @classid|pageid|slotid.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Daten erfolgreich gelesen und ausgegeben wurden, andernfalls false bei einem Fehler (z. B. ungültige Verbindung oder OID).

Beispiele

Bild aus GLO-Objekt direkt ausgeben

<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'meineDatenbank', 'admin', 'passwort');

if (!$conn) {
    die('Verbindung zur Datenbank fehlgeschlagen.');
}

// OID des GLO-Objekts (z. B. aus einer vorherigen Abfrage ermittelt)
$oid = '@0|1|1';

// HTTP-Header für Bild setzen
header('Content-Type: image/jpeg');

// GLO-Daten direkt ausgeben
if (!cubrid_send_glo($conn, $oid)) {
    echo 'Fehler beim Ausgeben des GLO-Objekts.';
}

cubrid_disconnect($conn);
?>

GLO-Objekt-Inhalt in Datei umleiten

<?php
$conn = cubrid_connect('localhost', 33000, 'meineDatenbank', 'admin', 'passwort');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$oid = '@0|2|3';

// Ausgabe-Puffer starten, um GLO-Daten abzufangen
ob_start();
$result = cubrid_send_glo($conn, $oid);
$daten = ob_get_clean();

if ($result) {
    // Daten in eine lokale Datei schreiben
    file_put_contents('/tmp/glo_export.bin', $daten);
    echo 'GLO-Objekt erfolgreich exportiert. Größe: ' . strlen($daten) . ' Bytes';
} else {
    echo 'Fehler beim Lesen des GLO-Objekts.';
}

cubrid_disconnect($conn);
?>
GLO-Objekt erfolgreich exportiert. Größe: 204800 Bytes

// Wichtig · Fallstricke

Veraltet: Die Funktion cubrid_send_glo sowie der gesamte GLO-Mechanismus gelten in modernen CUBRID-Versionen als veraltet. Neue Projekte sollten stattdessen die CUBRID LOB (Large Object)-API verwenden, die durch Funktionen wie cubrid_lob2_new, cubrid_lob2_read und cubrid_lob2_close bereitgestellt wird.

Da die Funktion Daten direkt in den Ausgabe-Puffer schreibt, sollten vor dem Aufruf keine anderen Ausgaben erfolgen, wenn die Daten z. B. als HTTP-Response gesendet werden. Andernfalls kann es zu korrupten Ausgaben kommen. Es empfiehlt sich, ob_start() einzusetzen, wenn die Daten zunächst zwischengespeichert werden sollen.