Start · Sprachen · PHP · Referenz · ibase_maintain_db

ibase_maintain_db

Funktion

Führt einen Wartungsbefehl (z. B. Backup, Restore, Sweep) auf einer Firebird/InterBase-Datenbank über eine Service-Verbindung aus.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_maintain_db(resource $service_handle, string $db, int $operation, int $argument = 0): bool

Beschreibung

ibase_maintain_db() ermöglicht es, administrative Wartungsoperationen auf einer Firebird- oder InterBase-Datenbank auszuführen, ohne die Datenbank direkt zu öffnen. Die Funktion arbeitet über eine zuvor mit ibase_service_attach() geöffnete Service-Verbindung.

Typische Einsatzszenarien sind das Ausführen eines Datenbank-Sweeps (Bereinigung veralteter Transaktionsdaten), das Setzen in den Read-Only-Modus oder das Aktivieren von Datenbankoptionen auf Serverebene. Der $operation-Parameter steuert, welche Wartungsoperation durchgeführt wird; er nimmt eine der vordefinierten Konstanten wie IBASE_RES_CREATE, IBASE_SVC_DB_ONLINE oder IBASE_SVC_REPAIR an.

Die Funktion ist besonders nützlich für automatisierte Datenbankwartungsscripts, die ohne interaktiven Datenbankzugriff auf Serverebene agieren müssen. Da es sich um eine Low-Level-Administrationsfunktion handelt, sollte sie nur von vertrauenswürdigen, privilegierten Prozessen aufgerufen werden.

Hinweis: Die ibase_*-Funktionen wurden in PHP 8.0 aus dem PHP-Kern entfernt und sind nur noch über die PECL-Erweiterung ibase bzw. FirebirdSQL/php-firebird verfügbar.

Parameter

Name Typ Default Beschreibung
$service_handle Pflicht resource Eine aktive Service-Verbindung, die zuvor mit ibase_service_attach() geöffnet wurde.
$db Pflicht string Der vollständige Pfad zur Datenbankdatei auf dem Server (z. B. /var/db/mydb.fdb).
$operation Pflicht int Die durchzuführende Wartungsoperation als vordefinierte Konstante, z. B. IBASE_SVC_REPAIR, IBASE_SVC_DB_ONLINE oder IBASE_SVC_GET_SIZE.
$argument int 0 Optionaler ganzzahliger Zusatzparameter für die Operation, z. B. Optionsflags. Standardmäßig 0.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false bei einem Fehler (z. B. ungültige Service-Verbindung, nicht vorhandene Datenbank oder fehlende Rechte).

Beispiele

Datenbank-Sweep über Service-Verbindung ausführen

<?php
// Service-Verbindung aufbauen
$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');

if ($service) {
    $dbPath = '/var/firebird/myapp.fdb';

    // Sweep ausführen, um veraltete Transaktionsdaten zu bereinigen
    $result = ibase_maintain_db($service, $dbPath, IBASE_RES_CREATE, 0);

    if ($result) {
        echo "Wartungsoperation erfolgreich abgeschlossen." . PHP_EOL;
    } else {
        echo "Fehler bei der Wartungsoperation." . PHP_EOL;
    }

    ibase_service_detach($service);
} else {
    echo "Service-Verbindung fehlgeschlagen." . PHP_EOL;
}
?>
Wartungsoperation erfolgreich abgeschlossen.

Datenbank online schalten nach Wartungsmodus

<?php
$service = ibase_service_attach('db.example.com', 'sysdba', 'masterkey');

if (!$service) {
    die('Verbindung zum Datenbankservice nicht möglich.');
}

$dbPath = '/opt/firebird/data/production.fdb';

// Datenbank wieder online schalten
if (ibase_maintain_db($service, $dbPath, IBASE_SVC_DB_ONLINE)) {
    echo "Datenbank ist wieder online." . PHP_EOL;
} else {
    echo "Fehler: Datenbank konnte nicht online geschaltet werden." . PHP_EOL;
}

ibase_service_detach($service);
?>
Datenbank ist wieder online.

// Wichtig · Fallstricke

Deprecation/Entfernung: Die gesamte ibase_*-Erweiterung wurde in PHP 8.0 aus dem PHP-Kern entfernt. Für PHP 8.x und neuer muss die PECL-Erweiterung php-firebird separat installiert werden.

Sicherheit: Die Funktion erfordert Administratorrechte auf dem Datenbankserver (typischerweise den SYSDBA-Account). Zugangsdaten und Service-Verbindungen sollten niemals in öffentlich zugänglichem Code gespeichert werden. Datenbankpfade sollten niemals direkt aus Benutzereingaben übernommen werden, um Path-Traversal-Angriffe zu verhindern.

Verfügbarkeit der Konstanten: Die verfügbaren Operationskonstanten (z. B. IBASE_SVC_REPAIR, IBASE_SVC_DB_ONLINE) hängen von der installierten Version der ibase-Erweiterung ab. Konsultiere die jeweilige Dokumentation für vollständige Konstantenlisten.