Start · Sprachen · PHP · Referenz · ibase_backup

ibase_backup

Funktion

Initiiert eine Sicherungsaufgabe im Firebird/InterBase Service Manager und kehrt sofort zurück, ohne auf den Abschluss zu warten.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_backup(resource $service_handle, string $source_db, string $dest_file, int $options = 0, bool $verbose = false): mixed

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

Typ
mixed
Beschreibung
Gibt 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-Aufgabe erfolgreich gestartet. Backup-Datei: /var/backups/meine_datenbank_20240101_120000.fbk

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);
Metadaten-Backup erfolgreich initiiert.

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