Signatur
Beschreibung
ibase_backup() startet einen Backup-Vorgang auf dem Firebird- oder InterBase-Datenbankserver über den Service Manager. Im Gegensatz zu einem synchronen Backup kehrt die Funktion unmittelbar zurück, während das Backup im Hintergrund weiterläuft. Dies ermöglicht es, lange andauernde Sicherungen nicht-blockierend anzustoßen.
Der Parameter $service_handle muss eine zuvor mit ibase_service_attach() geöffnete Service-Manager-Verbindung sein. Die Quelldatenbank wird durch den Pfad $source_db auf dem Server angegeben, während $dest_file den Zieldateipfad der Backup-Datei auf dem Server definiert.
Über den optionalen Parameter $options können verschiedene Backup-Optionen als Bitmaske kombiniert werden, z. B. IBASE_BKP_IGNORE_CHECKSUMS, IBASE_BKP_IGNORE_LIMBO, IBASE_BKP_METADATA_ONLY oder IBASE_BKP_NO_GARBAGE_COLLECT. Wenn $verbose auf true gesetzt wird, gibt die Funktion detaillierte Fortschrittsinformationen aus.
Hinweis: Diese Funktion gehört zur ibase_*-Erweiterung (Interbase/Firebird) und wurde in PHP 8.0 aus dem PHP-Core entfernt. Ab PHP 8.0 steht sie nur noch über die PECL-Erweiterung ibase zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $service_handle Pflicht | resource | Eine aktive Service-Manager-Verbindung, die zuvor mit ibase_service_attach() geöffnet wurde. |
|
| $source_db Pflicht | string | Der vollständige Pfad zur Quelldatenbank auf dem Server, die gesichert werden soll (serverseitiger Pfad). | |
| $dest_file Pflicht | string | Der vollständige Zieldateipfad für die Backup-Datei auf dem Server (serverseitiger Pfad). | |
| $options | int | 0 | Optionale Backup-Flags als Bitmaske. Mögliche Konstanten: IBASE_BKP_IGNORE_CHECKSUMS, IBASE_BKP_IGNORE_LIMBO, IBASE_BKP_METADATA_ONLY, IBASE_BKP_NO_GARBAGE_COLLECT, IBASE_BKP_OLD_DESCRIPTIONS, IBASE_BKP_NON_TRANSPORTABLE, IBASE_BKP_CONVERT. |
| $verbose | bool | false | Wenn true, werden detaillierte Fortschrittsmeldungen des Backup-Vorgangs ausgegeben. |
Rückgabewert
true zurück, wenn der Backup-Vorgang erfolgreich gestartet wurde. Bei aktiviertem $verbose-Modus werden Statusinformationen ausgegeben. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfaches nicht-blockierendes Backup einer Firebird-Datenbank
<?php
// Verbindung zum Service Manager herstellen
$serviceHandle = ibase_service_attach('localhost', 'sysdba', 'masterkey');
if ($serviceHandle === false) {
die('Verbindung zum Service Manager fehlgeschlagen.');
}
$quelldatenbank = '/var/lib/firebird/data/meine_datenbank.fdb';
$backupDatei = '/var/backups/meine_datenbank_' . date('Ymd_His') . '.fbk';
// Backup-Aufgabe initiieren (kehrt sofort zurück)
$result = ibase_backup($serviceHandle, $quelldatenbank, $backupDatei);
if ($result) {
echo "Backup-Aufgabe erfolgreich gestartet.\n";
echo "Backup-Datei: " . $backupDatei . "\n";
} else {
echo "Fehler beim Starten des Backups.\n";
}
// Service Manager Verbindung schließen
ibase_service_detach($serviceHandle);
Backup nur der Metadaten mit Verbose-Ausgabe
<?php
// Verbindung zum Service Manager aufbauen
$serviceHandle = ibase_service_attach('dbserver.example.com', 'sysdba', 'masterkey');
if ($serviceHandle === false) {
die('Keine Verbindung zum Service Manager möglich.');
}
$quelldatenbank = 'C:\\Firebird\\Data\\ERP.FDB';
$backupDatei = 'C:\\Backups\\ERP_meta_only.fbk';
// Nur Metadaten sichern, mit ausführlicher Ausgabe
$result = ibase_backup(
$serviceHandle,
$quelldatenbank,
$backupDatei,
IBASE_BKP_METADATA_ONLY,
true
);
if ($result) {
echo "Metadaten-Backup erfolgreich initiiert.\n";
} else {
echo "Backup konnte nicht gestartet werden.\n";
}
ibase_service_detach($serviceHandle);
// Wichtig · Fallstricke
Deprecation/Entfernung: Die ibase_*-Erweiterung wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem offiziellen PHP-Core entfernt. Ab PHP 8.0 ist diese Funktion nur noch über die PECL-Erweiterung ibase verfügbar. Für neue Projekte sollte die Firebird/InterBase-PDO-Erweiterung (PDO_FIREBIRD) in Betracht gezogen werden.
Serverseitige Pfade: Die Pfade für $source_db und $dest_file werden auf dem Datenbankserver interpretiert, nicht auf dem PHP-Webserver. Stellen Sie sicher, dass der Firebird-Dienst Lese- und Schreibrechte auf die entsprechenden Verzeichnisse hat.
Asynchrones Verhalten: Da die Funktion sofort zurückkehrt, ist der Backup-Vorgang zum Zeitpunkt der Rückkehr möglicherweise noch nicht abgeschlossen. Planen Sie entsprechende Überprüfungen ein, bevor Sie auf die Backup-Datei zugreifen oder eine nachfolgende Wiederherstellung durchführen.