Start · Sprachen · PHP · Referenz · fbird_service_detach

fbird_service_detach

Funktion

Trennt eine zuvor hergestellte Verbindung zum Firebird/InterBase-Dienst-Manager und gibt die zugehörigen Ressourcen frei.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_service_detach(resource $service): bool

Beschreibung

fbird_service_detach() schließt eine Verbindung zum Firebird- oder InterBase-Dienst-Manager, die zuvor mit ibase_service_attach() bzw. fbird_service_attach() geöffnet wurde. Nach dem Aufruf ist das übergebene Service-Handle ungültig und darf nicht mehr verwendet werden.

Der Dienst-Manager ermöglicht administrative Aufgaben wie das Sichern und Wiederherstellen von Datenbanken, das Abrufen von Server-Informationen oder die Verwaltung von Benutzern. fbird_service_detach() sollte nach Abschluss dieser Aufgaben aufgerufen werden, um Ressourcen auf Server- und Client-Seite sauber freizugeben.

Die Funktion ist ein Alias von ibase_service_detach() und wurde im Zuge der Umbenennung der InterBase-Extension zu Firebird eingeführt. In modernen PHP-Versionen (ab PHP 8) steht ausschließlich die fbird_*-Variante zur Verfügung.

Parameter

Name Typ Default Beschreibung
$service Pflicht resource Ein gültiges Service-Handle, das von fbird_service_attach() oder ibase_service_attach() zurückgegeben wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Im Fehlerfall (z. B. ungültiges Handle) wird false zurückgegeben.

Beispiele

Verbindung zum Firebird-Dienst-Manager öffnen und trennen

<?php
// Verbindung zum Dienst-Manager herstellen
$service = fbird_service_attach('localhost', 'sysdba', 'masterkey');

if ($service === false) {
    die('Verbindung zum Dienst-Manager fehlgeschlagen.');
}

// Beispiel: Server-Version abfragen
$info = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
echo 'Firebird-Version: ' . $info . PHP_EOL;

// Verbindung sauber trennen
if (fbird_service_detach($service)) {
    echo 'Verbindung zum Dienst-Manager erfolgreich getrennt.' . PHP_EOL;
} else {
    echo 'Fehler beim Trennen der Verbindung.' . PHP_EOL;
}
Firebird-Version: WI-V3.0.7.33374 Firebird 3.0 Verbindung zum Dienst-Manager erfolgreich getrennt.

Datenbank sichern und Verbindung anschließend trennen

<?php
$host    = 'localhost';
$user    = 'sysdba';
$pass    = 'masterkey';
$db      = 'C:\\Daten\\meineprojekte.fdb';
$backup  = 'C:\\Backup\\meineprojekte.fbk';

$service = fbird_service_attach($host, $user, $pass);

if ($service === false) {
    die('Dienst-Manager nicht erreichbar.');
}

try {
    // Backup-Vorgang starten
    ibase_backup($service, $db, $backup, IBASE_BKP_IGNORE_CHECKSUMS);
    echo 'Backup erfolgreich erstellt.' . PHP_EOL;
} finally {
    // Verbindung in jedem Fall trennen
    fbird_service_detach($service);
    echo 'Dienst-Manager-Verbindung getrennt.' . PHP_EOL;
}
Backup erfolgreich erstellt. Dienst-Manager-Verbindung getrennt.

// Wichtig · Fallstricke

Alias: fbird_service_detach() ist ein Alias von ibase_service_detach(). In PHP 8.0 wurde die ibase_*-Extension aus dem PHP-Kern entfernt; seither steht sie nur noch über die separate PECL-Extension ibase zur Verfügung, die ausschließlich die fbird_*-Präfixe verwendet.

Stellen Sie sicher, dass das übergebene $service-Handle nicht bereits getrennt wurde, da ein erneuter Aufruf mit einem ungültigen Handle zu einem Laufzeitfehler führen kann. Verwenden Sie try/finally-Blöcke, um die Verbindung auch im Fehlerfall zuverlässig zu schließen.