Signatur
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
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;
}
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;
}
// 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.