Start · Sprachen · PHP · Referenz · ibase_service_detach

ibase_service_detach

Funktion

Trennt eine bestehende Verbindung zum Firebird/InterBase Service-Manager und gibt die zugehörigen Ressourcen frei.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_service_detach(resource $service_handle): bool

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

Typ
bool
Beschreibung
Gibt 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";
}
Backup erfolgreich erstellt. Service-Verbindung erfolgreich getrennt.

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";
}
Datenbankinfo erfolgreich abgerufen. Service-Verbindung getrennt.

// 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.