Start · Sprachen · PHP · Referenz · fbird_pconnect

fbird_pconnect

Funktion

Öffnet eine dauerhafte (persistente) Verbindung zu einer Firebird/InterBase-Datenbank und gibt eine Verbindungsressource zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_pconnect(string $database = null, string $username = null, string $password = null, string $charset = null, int $buffers = null, int $dialect = null, string $role = null): resource|false

Beschreibung

fbird_pconnect() (auch bekannt als ibase_pconnect()) öffnet eine persistente Verbindung zu einer Firebird- oder InterBase-Datenbank. Im Gegensatz zu fbird_connect() wird die Verbindung am Ende des Skripts nicht geschlossen, sondern für nachfolgende Anfragen im Verbindungs-Pool des Web-Servers wiederverwendet. Das kann den Overhead von wiederholten Verbindungsaufbauten deutlich reduzieren.

Wird fbird_pconnect() mit identischen Parametern erneut aufgerufen, gibt PHP die bereits bestehende Verbindung zurück, statt eine neue zu öffnen. Die Verbindung bleibt solange aktiv, wie der PHP-Prozess (z. B. ein Apache-Worker) läuft. Das Skript-seitige Aufrufen von fbird_close() hat bei persistenten Verbindungen keine Wirkung.

Persistente Verbindungen eignen sich besonders für Umgebungen mit häufigen, kurzlebigen Anfragen (z. B. Web-Applikationen), bei denen der Verbindungsaufbau einen spürbaren Anteil der Antwortzeit ausmacht. Bei Datenbank-Transaktionen, die über das Skript-Ende hinaus offen blieben, kann es jedoch zu unerwarteten Zuständen kommen — Transaktionen werden beim Wiederbenutzen der Verbindung nicht automatisch zurückgerollt.

Hinweis: Die Funktionen der fbird_*-Familie sind Aliase der ibase_*-Funktionen und stehen über die Firebird-Erweiterung zur Verfügung. Ab PHP 8.4 wird die Erweiterung aus dem Core entfernt und als PECL-Paket weitergeführt.

Parameter

Name Typ Default Beschreibung
$database string Pfad zur Datenbankdatei auf dem Server, z. B. localhost:/var/db/meine.fdb. Wird der Parameter weggelassen, wird der zuletzt geöffneten Verbindung entsprochen.
$username string Benutzername für die Datenbankverbindung. Wird er nicht angegeben, greift der INI-Wert ibase.default_user.
$password string Passwort für den Datenbankbenutzer. Standardwert kommt aus ibase.default_password.
$charset string Zeichensatz, der für die Verbindung verwendet wird, z. B. UTF8 oder ISO8859_1. Standardwert kommt aus ibase.default_charset.
$buffers int Anzahl der Datenbank-Cache-Puffer, die serverseitig für diese Verbindung reserviert werden. 0 oder Weglassen bedeutet serverseitige Standardeinstellung.
$dialect int SQL-Dialekt der Verbindung (1, 2 oder 3). Standardwert ist Dialekt 3, der für moderne Firebird-Datenbanken empfohlen wird.
$role string SQL-Rolle (Role), unter der die Verbindung hergestellt wird, um granulare Zugriffsrechte zu nutzen.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine Firebird-Verbindungsressource zurück. Im Fehlerfall wird false zurückgegeben und ein Fehler ausgelöst.

Beispiele

Einfache persistente Verbindung zu einer Firebird-Datenbank

<?php
$dbPath   = 'localhost:/var/firebird/meine_app.fdb';
$user     = 'SYSDBA';
$password = 'geheimesPasswort';

$conn = fbird_pconnect($dbPath, $user, $password, 'UTF8');

if ($conn === false) {
    die('Verbindung fehlgeschlagen: ' . ibase_errmsg());
}

$result = fbird_query($conn, 'SELECT FIRST 5 * FROM KUNDEN');
while ($row = fbird_fetch_assoc($result)) {
    echo $row['NAME'] . PHP_EOL;
}

// Hinweis: fbird_close() hat bei persistenten Verbindungen keinen Effekt
?>

Wiederverwendung einer persistenten Verbindung erkennen

<?php
// Beide Aufrufe mit identischen Parametern liefern dieselbe Ressource
$conn1 = fbird_pconnect('localhost:/var/firebird/test.fdb', 'SYSDBA', 'masterkey', 'UTF8');
$conn2 = fbird_pconnect('localhost:/var/firebird/test.fdb', 'SYSDBA', 'masterkey', 'UTF8');

if ($conn1 === $conn2) {
    echo 'Persistente Verbindung wird wiederverwendet.' . PHP_EOL;
} else {
    echo 'Neue Verbindung wurde geöffnet.' . PHP_EOL;
}
?>
Persistente Verbindung wird wiederverwendet.

// Wichtig · Fallstricke

Sicherheit: Benutzernamen und Passwörter niemals im Quellcode hart kodieren. Verwende stattdessen Umgebungsvariablen oder externe Konfigurationsdateien, die außerhalb des Web-Roots liegen.

Transaktionen: Offene Transaktionen, die beim Skript-Ende nicht committet oder zurückgerollt wurden, können bei der nächsten Wiederverwendung der Verbindung zu inkonsistentem Verhalten führen. Stelle sicher, dass jede Transaktion explizit mit fbird_commit() oder fbird_rollback() abgeschlossen wird.

Deprecation: Die fbird_*/ibase_*-Erweiterung wurde ab PHP 7.4 als veraltet markiert und ab PHP 8.4 aus dem PHP-Core entfernt. Für neue Projekte empfiehlt sich der Einsatz über PECL oder eine alternative Datenbankbibliothek.