Start · Sprachen · PHP · Referenz · ibase_db_info

ibase_db_info

Funktion

Fragt statistische Informationen und Konfigurationsdaten über eine Firebird/InterBase-Datenbank ab.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_db_info(resource $service_handle, string $db, int $action, int $argument = 0): string

Beschreibung

ibase_db_info() kommuniziert über einen Service-Handle mit dem Firebird- oder InterBase-Datenbankserver und ruft statistische bzw. strukturelle Informationen über eine angegebene Datenbank ab. Die Funktion gehört zur InterBase-Extension (ibase_*) und setzt eine aktive Service-Verbindung voraus, die zuvor mit ibase_service_attach() geöffnet wurde.

Mit dem Parameter $action wird gesteuert, welche Art von Daten abgefragt wird. Typische Aktionskonstanten sind IBASE_STS_DATA_PAGES, IBASE_STS_DB_LOG, IBASE_STS_HDR_PAGES, IBASE_STS_IDX_PAGES und IBASE_STS_SYS_RELATIONS. Diese entsprechen den Optionen des Firebird-Kommandozeilentools gstat.

Die Funktion ist nützlich für Datenbankadministration und Monitoring: Sie erlaubt es, Seitenfüllgrade, Logdaten und Header-Informationen direkt aus PHP heraus abzurufen, ohne externe Tools bemühen zu müssen.

Hinweis: Die ibase_*-Funktionen wurden in PHP 8.0 aus dem PHP-Kern entfernt und stehen seitdem nur noch über die PECL-Extension ibase oder das Paket php8-interbase zur Verfügung. Für neue Projekte empfiehlt sich die Verwendung von PDO mit dem Firebird-Treiber.

Parameter

Name Typ Default Beschreibung
$service_handle Pflicht resource Ein aktiver Service-Handle, der mit ibase_service_attach() geöffnet wurde.
$db Pflicht string Der vollständige Pfad zur Datenbankdatei auf dem Server, z. B. /var/db/meinedatenbank.fdb.
$action Pflicht int Eine der vordefinierten Konstanten, die den Typ der abzufragenden Statistik bestimmt. Mögliche Werte: IBASE_STS_DATA_PAGES, IBASE_STS_DB_LOG, IBASE_STS_HDR_PAGES, IBASE_STS_IDX_PAGES, IBASE_STS_SYS_RELATIONS.
$argument int 0 Optionaler zusätzlicher Parameter für bestimmte Aktionen. Wird meist auf 0 belassen.

Rückgabewert

Typ
string
Beschreibung
Gibt einen String mit den abgefragten Statusinformationen zurück. Das Format ist ein rohes Textformat, das dem Ausgabeformat von gstat ähnelt. Im Fehlerfall wird false zurückgegeben.

Beispiele

Datenbankstatistik über Service-Handle abrufen

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

if (!$service) {
    die('Service-Verbindung fehlgeschlagen.');
}

$dbPath = '/var/firebird/meinedatenbank.fdb';

// Header-Seiteninformationen abrufen
$info = ibase_db_info($service, $dbPath, IBASE_STS_HDR_PAGES);

if ($info !== false) {
    echo "Datenbankinfos (Header):\n";
    echo $info;
} else {
    echo 'Fehler beim Abrufen der Datenbankinfos.';
}

ibase_service_detach($service);
?>
Datenbankinfos (Header): Database header page information: Flags 0 Checksum 12345 ...

Daten- und Index-Seiten-Statistik auslesen

<?php
$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');
$dbPath  = '/var/firebird/meinedatenbank.fdb';

$aktionen = [
    'Datenseiten'  => IBASE_STS_DATA_PAGES,
    'Indexseiten'  => IBASE_STS_IDX_PAGES,
    'Systemtabellen' => IBASE_STS_SYS_RELATIONS,
];

foreach ($aktionen as $bezeichnung => $aktion) {
    $ergebnis = ibase_db_info($service, $dbPath, $aktion);
    echo "=== $bezeichnung ===\n";
    echo ($ergebnis !== false ? $ergebnis : 'Fehler') . "\n";
}

ibase_service_detach($service);
?>

// Wichtig · Fallstricke

Deprecation/Entfernung: Die gesamte ibase_*-Extension wurde mit PHP 8.0 aus dem offiziellen PHP-Kern entfernt. Sie ist seitdem nur noch als PECL-Paket verfügbar. Bestehende Anwendungen sollten auf PDO_Firebird migriert werden.

Berechtigungen: Für den Zugriff auf Service-Funktionen benötigt der Datenbankbenutzer in der Regel SYSDBA-Rechte oder entsprechende Administratorrechte auf dem Firebird-Server.

Rückgabeformat: Der zurückgegebene String ist nicht strukturiert (kein JSON/XML), sondern ein rohes Textformat. Eine weitere Verarbeitung erfordert manuelles Parsen mit String-Funktionen wie preg_match() oder explode().