Start · Sprachen · PHP · Referenz · cubrid_load_from_glo

cubrid_load_from_glo

Funktion

Liest Daten aus einer CUBRID GLO-Instanz (Generalized Large Object) und speichert sie in einer lokalen Datei.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_load_from_glo(resource $conn_identifier, string $oid, string $file_name): int

Beschreibung

cubrid_load_from_glo() liest den Inhalt einer GLO-Instanz (Generalized Large Object) aus einer CUBRID-Datenbank und schreibt die gelesenen Daten in eine angegebene lokale Datei. GLO-Objekte werden in CUBRID verwendet, um große Binär- oder Textdaten (z. B. Bilder, Dokumente) direkt in der Datenbank zu speichern.

Die Funktion benötigt eine aktive Datenbankverbindung, die OID (Object Identifier) der GLO-Instanz sowie den Pfad der Zieldatei auf dem lokalen Dateisystem. Ist die Zieldatei noch nicht vorhanden, wird sie angelegt; existiert sie bereits, wird sie überschrieben.

Diese Funktion eignet sich besonders, wenn gespeicherte Binärdaten aus der Datenbank extrahiert und lokal weiterverarbeitet oder dem Nutzer zum Download angeboten werden sollen.

Hinweis: Diese Funktion ist als veraltet markiert und steht nur in älteren CUBRID-PHP-Treiber-Versionen zur Verfügung. Für aktuelle Projekte sollte stattdessen die CUBRID-LOB-API (cubrid_lob_get() etc.) verwendet werden.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Eine aktive CUBRID-Datenbankverbindung, die zuvor mit cubrid_connect() oder cubrid_connect_with_url() geöffnet wurde.
$oid Pflicht string Die OID (Object Identifier) der GLO-Instanz in der CUBRID-Datenbank, aus der die Daten gelesen werden sollen. Die OID hat üblicherweise das Format @pageId|slotId|volumeId.
$file_name Pflicht string Der vollständige oder relative Pfad zur Zieldatei auf dem lokalen Dateisystem, in die der Inhalt der GLO-Instanz geschrieben wird. Existiert die Datei bereits, wird sie überschrieben.

Rückgabewert

Typ
int
Beschreibung
Gibt 0 zurück, wenn der Vorgang erfolgreich war, oder einen negativen Fehlercode, wenn ein Fehler aufgetreten ist.

Beispiele

GLO-Inhalt aus CUBRID in eine lokale Datei exportieren

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

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

// OID der gewünschten GLO-Instanz (z. B. ein gespeichertes Bild)
$oid = '@620|1|1';

// Zieldatei, in die der Inhalt geschrieben werden soll
$zieldatei = '/tmp/exportiertes_bild.jpg';

// GLO-Inhalt in Datei laden
$ergebnis = cubrid_load_from_glo($conn, $oid, $zieldatei);

if ($ergebnis === 0) {
    echo 'GLO-Inhalt erfolgreich in ' . $zieldatei . ' gespeichert.';
} else {
    echo 'Fehler beim Laden des GLO-Inhalts. Fehlercode: ' . $ergebnis;
}

cubrid_disconnect($conn);
?>
GLO-Inhalt erfolgreich in /tmp/exportiertes_bild.jpg gespeichert.

GLO-Datei exportieren und zum Download anbieten

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

$oid = '@620|1|1';
$tmpDatei = tempnam(sys_get_temp_dir(), 'glo_');

$ergebnis = cubrid_load_from_glo($conn, $oid, $tmpDatei);

if ($ergebnis === 0 && file_exists($tmpDatei)) {
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="download.bin"');
    header('Content-Length: ' . filesize($tmpDatei));
    readfile($tmpDatei);
    unlink($tmpDatei); // Temporäre Datei nach dem Senden entfernen
} else {
    http_response_code(500);
    echo 'Fehler beim Abrufen der Datei.';
}

cubrid_disconnect($conn);
?>

// Wichtig · Fallstricke

Veraltet: cubrid_load_from_glo() ist eine ältere API-Funktion des CUBRID-PHP-Treibers und gilt als veraltet. In neueren Versionen des CUBRID-Treibers steht diese Funktion möglicherweise nicht mehr zur Verfügung. Es wird empfohlen, stattdessen die aktuellen LOB-Funktionen wie cubrid_lob2_new(), cubrid_lob2_read() und cubrid_lob2_export() zu verwenden.

Dateisystem-Berechtigungen: Der PHP-Prozess muss Schreibzugriff auf das Zielverzeichnis haben. Bei Produktivumgebungen sollte darauf geachtet werden, dass Benutzereingaben nicht direkt als Dateipfad verwendet werden, um Path-Traversal-Angriffe zu vermeiden.

Überschreiben: Existierende Dateien am Zielpfad werden ohne Warnung überschrieben. Prüfen Sie daher vorab, ob eine Datei bereits vorhanden ist, wenn ein unbeabsichtigtes Überschreiben verhindert werden soll.