Signatur
Beschreibung
ibase_service_detach() schließt eine zuvor mit ibase_service_attach() geöffnete Verbindung zum Firebird- oder InterBase-Service-Manager. Nach dem Aufruf ist das übergebene Handle ungültig und kann nicht mehr für Service-Operationen wie Backup, Restore oder Datenbankwartung verwendet werden.
Die Funktion sollte nach Abschluss aller Service-Aufgaben aufgerufen werden, um Serverressourcen sauber freizugeben. Verbindungen zum Service-Manager sind von regulären Datenbankverbindungen getrennt und müssen separat geschlossen werden.
Ein typischer Anwendungsfall ist die Ausführung administrativer Aufgaben wie ibase_backup() oder ibase_restore(), bei denen nach Abschluss der Operation die Service-Verbindung ordnungsgemäß beendet werden soll.
Hinweis: Die gesamte Firebird/InterBase-Erweiterung (ibase_*) gilt seit PHP 7.4 als veraltet und wurde in PHP 8.0 aus dem PHP-Kern entfernt. Sie steht seitdem nur noch über die externe PECL-Erweiterung ibase zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $service_handle Pflicht | resource | Eine gültige Service-Manager-Verbindungsressource, die zuvor mit ibase_service_attach() erzeugt wurde. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich getrennt wurde, andernfalls false.Beispiele
Service-Verbindung nach einem Backup trennen
<?php
// Verbindung zum Service-Manager herstellen
$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');
if ($service === false) {
die('Verbindung zum Service-Manager fehlgeschlagen.');
}
// Backup der Datenbank durchführen
$result = ibase_backup(
$service,
'/var/lib/firebird/data/mydb.fdb',
'/var/backups/mydb.fbk'
);
if ($result !== false) {
echo "Backup erfolgreich erstellt.\n";
} else {
echo "Backup fehlgeschlagen.\n";
}
// Service-Verbindung trennen
if (ibase_service_detach($service)) {
echo "Service-Verbindung erfolgreich getrennt.\n";
} else {
echo "Fehler beim Trennen der Service-Verbindung.\n";
}
Service-Verbindung nach Datenbankwartung schließen
<?php
// Verbindung zum Service-Manager herstellen
$service = ibase_service_attach('dbserver.example.com', 'sysdba', 'masterkey');
if ($service === false) {
die('Verbindung zum Service-Manager fehlgeschlagen.');
}
try {
// Datenbankstatistiken abrufen
ibase_db_info($service, '/var/lib/firebird/data/mydb.fdb', IBASE_SVC_DB_STATS);
echo "Datenbankinfo erfolgreich abgerufen.\n";
} finally {
// Verbindung in jedem Fall trennen
ibase_service_detach($service);
echo "Service-Verbindung getrennt.\n";
}
// Wichtig · Fallstricke
Deprecation-Hinweis: Die ibase_*-Funktionen wurden in PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem PHP-Kern entfernt. Für PHP 8.x steht die Funktionalität nur noch über die PECL-Erweiterung ibase bereit. Für neue Projekte sollte die Nutzung der PDO_Firebird-Erweiterung in Betracht gezogen werden.
Die Service-Verbindung sollte in jedem Fall getrennt werden, auch wenn vorherige Service-Operationen fehlgeschlagen sind. Die Verwendung von try/finally-Blöcken stellt sicher, dass ibase_service_detach() auch im Fehlerfall aufgerufen wird.
Das Trennen einer bereits geschlossenen oder ungültigen Ressource führt zu einem PHP-Fehler. Es empfiehlt sich daher, die Verbindungsressource nach dem Trennen nicht erneut zu verwenden.