Signatur
Beschreibung
fbird_blob_cancel() bricht einen laufenden BLOB-Erstellungsvorgang in einer Firebird- oder InterBase-Datenbankverbindung ab. Die Funktion wird verwendet, wenn ein mit fbird_blob_create() eröffneter BLOB nicht mehr benötigt wird oder ein Fehler beim Schreiben aufgetreten ist und der Vorgang sauber rückgängig gemacht werden soll.
Nachdem ein BLOB mit fbird_blob_create() geöffnet wurde, kann entweder mit fbird_blob_close() abgeschlossen oder – im Fehlerfall – mit fbird_blob_cancel() verworfen werden. Der zugehörige BLOB-Handle wird dabei ungültig gemacht und die belegten Serverressourcen werden freigegeben.
Diese Funktion ist besonders wichtig für eine robuste Fehlerbehandlung: Wird ein BLOB-Handle weder geschlossen noch abgebrochen, kann es zu Ressourcenlecks auf dem Datenbankserver kommen. fbird_blob_cancel() stellt sicher, dass kein halbfertiger BLOB in der Datenbank verbleibt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $blob Pflicht | resource | Eine BLOB-Ressource, die zuvor mit fbird_blob_create() erzeugt wurde und noch nicht mit fbird_blob_close() abgeschlossen wurde. |
Rückgabewert
true zurück, wenn der BLOB-Vorgang erfolgreich abgebrochen wurde. Im Fehlerfall wird false zurückgegeben.Beispiele
BLOB-Erstellung bei Fehler abbrechen
<?php
$dbh = fbird_connect('localhost:database.fdb', 'sysdba', 'masterkey');
$blob = fbird_blob_create($dbh);
$data = file_get_contents('/pfad/zur/datei.bin');
if ($data === false) {
// Fehler beim Lesen der Datei — BLOB-Erstellung abbrechen
fbird_blob_cancel($blob);
echo "BLOB-Erstellung abgebrochen: Datei konnte nicht gelesen werden.";
} else {
fbird_blob_add($blob, $data);
$blob_id = fbird_blob_close($blob);
echo "BLOB erfolgreich gespeichert, ID: " . $blob_id;
}
fbird_close($dbh);
?>
BLOB-Abbruch in try-catch-Fehlerbehandlung
<?php
$dbh = fbird_connect('localhost:database.fdb', 'sysdba', 'masterkey');
$blob = fbird_blob_create($dbh);
try {
// Simulierter Fehler beim Schreiben
$success = fbird_blob_add($blob, str_repeat('X', 1024));
if (!$success) {
throw new RuntimeException('Fehler beim Schreiben in den BLOB.');
}
$blob_id = fbird_blob_close($blob);
echo "BLOB gespeichert.";
} catch (RuntimeException $e) {
fbird_blob_cancel($blob);
echo "Fehler: " . $e->getMessage() . " — BLOB wurde verworfen.";
}
fbird_close($dbh);
?>
// Wichtig · Fallstricke
Alias: fbird_blob_cancel() ist ein Alias für ibase_blob_cancel(). Beide Funktionen sind seit PHP 8.0 Teil der separaten Firebird-Erweiterung (php-interbase), da die ibase-Erweiterung aus dem PHP-Core entfernt wurde.
Ressourcenlecks vermeiden: Ein mit fbird_blob_create() eröffneter BLOB-Handle muss immer entweder mit fbird_blob_close() oder fbird_blob_cancel() beendet werden. Ein unkontrolliertes Skriptende ohne explizites Schließen oder Abbrechen kann zu Ressourcenproblemen auf dem Datenbankserver führen.
Kein Rückgängigmachen von geschlossenen BLOBs: fbird_blob_cancel() kann ausschließlich auf noch offene BLOB-Handles angewendet werden. Wurde ein BLOB bereits mit fbird_blob_close() geschlossen, ist ein nachträgliches Abbrechen nicht mehr möglich.