Signatur
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
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-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.