Signatur
Beschreibung
fbird_blob_get liest bis zu $len Bytes aus einem BLOB (Binary Large Object), das zuvor mit fbird_blob_open geöffnet wurde. Die Funktion gehört zur Firebird/InterBase-Datenbankschnittstelle von PHP und erlaubt das stückweise Einlesen großer Binär- oder Textdaten, die in BLOB-Feldern einer Firebird- oder InterBase-Datenbank gespeichert sind.
BLOBs können sehr groß sein (z. B. Bilder, Dokumente oder lange Texte). Statt den gesamten Inhalt auf einmal zu laden, kann man mit fbird_blob_get Chunk für Chunk lesen und so den Speicherverbrauch kontrollieren. Dies ist besonders nützlich bei serverseitigen Skripten, die große Dateien ausliefern oder verarbeiten.
Nach dem Lesen aller benötigten Daten sollte das BLOB-Handle mit fbird_blob_close geschlossen werden, um Ressourcen freizugeben.
Hinweis: Diese Funktion ist ein Alias für ibase_blob_get. Die fbird_*-Funktionen wurden eingeführt, um die Benennung konsistenter zu gestalten. Ab PHP 8.4 wurde die InterBase/Firebird-Erweiterung in das PECL-Paket ausgelagert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $blob_handle Pflicht | resource | Ein gültiges BLOB-Handle, das mit fbird_blob_open geöffnet wurde. |
|
| $len Pflicht | int | Die maximale Anzahl von Bytes, die aus dem BLOB gelesen werden sollen. |
Rückgabewert
false zurückgegeben.Beispiele
BLOB-Inhalt vollständig auslesen und ausgeben
<?php
$dbh = fbird_connect('localhost:/path/to/database.fdb', 'SYSDBA', 'masterkey');
$result = fbird_query($dbh, 'SELECT MEIN_BLOB_FELD FROM MEINE_TABELLE WHERE ID = 1');
$row = fbird_fetch_object($result);
// BLOB öffnen
$blob_handle = fbird_blob_open($dbh, $row->MEIN_BLOB_FELD);
$inhalt = '';
// BLOB in Chunks von 8192 Bytes lesen
while ($chunk = fbird_blob_get($blob_handle, 8192)) {
$inhalt .= $chunk;
}
fbird_blob_close($blob_handle);
fbird_free_result($result);
fbird_close($dbh);
echo $inhalt;
?>
BLOB-Inhalt als Datei-Download streamen
<?php
$dbh = fbird_connect('localhost:/path/to/database.fdb', 'SYSDBA', 'masterkey');
$result = fbird_query($dbh, 'SELECT DATEI_BLOB FROM DATEIEN WHERE ID = 42');
$row = fbird_fetch_object($result);
$blob_handle = fbird_blob_open($dbh, $row->DATEI_BLOB);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="datei.bin"');
// Direkt in den Output-Buffer schreiben
while ($chunk = fbird_blob_get($blob_handle, 4096)) {
echo $chunk;
}
fbird_blob_close($blob_handle);
fbird_free_result($result);
fbird_close($dbh);
?>
// Wichtig · Fallstricke
Ressourcen-Management: Stellen Sie sicher, dass fbird_blob_close nach dem Lesen immer aufgerufen wird, auch im Fehlerfall. Andernfalls können Datenbankverbindungen und Ressourcen verloren gehen.
Chunk-Größe: Die Wahl einer geeigneten Chunk-Größe (z. B. 4096 oder 8192 Bytes) ist wichtig. Zu kleine Werte erhöhen die Anzahl der Datenbankaufrufe; zu große Werte können den PHP-Speicher belasten.
Verfügbarkeit: fbird_blob_get ist ein Alias für ibase_blob_get. Ab PHP 8.4 wurde die integrierte InterBase/Firebird-Unterstützung aus dem PHP-Kern entfernt; die Funktion steht dann nur noch über das PECL-Paket ibase zur Verfügung.