Start · Sprachen · PHP · Referenz · cubrid_pconnect

cubrid_pconnect

Funktion

Öffnet eine dauerhafte (persistente) Verbindung zu einem CUBRID-Datenbankserver und gibt eine Verbindungsressource zurück.

seit PHP 8.4.0 Kategorie: db

Signatur

cubrid_pconnect(string $host, int $port, string $dbname, string $userid = "", string $passwd = ""): resource|false

Beschreibung

cubrid_pconnect() stellt eine persistente Verbindung zu einem CUBRID-Datenbankserver her. Im Gegensatz zu cubrid_connect() wird die Verbindung nach dem Ende des PHP-Skripts nicht geschlossen, sondern im Verbindungspool gehalten und bei nachfolgenden Anfragen mit identischen Verbindungsparametern wiederverwendet.

Persistente Verbindungen sind besonders in Hochlast-Umgebungen sinnvoll, da der Aufbau einer neuen Datenbankverbindung relativ teuer ist. Durch die Wiederverwendung bestehender Verbindungen werden Latenz und Ressourcenverbrauch deutlich reduziert. Der PHP-Prozess (z. B. als FPM-Worker) hält die Verbindung offen, solange er läuft.

Falls eine offene persistente Verbindung mit denselben Parametern bereits im Pool vorhanden ist, wird diese zurückgegeben, ohne eine neue Verbindung zum Server aufzubauen. Das Verhalten ist analog zu pconnect-Funktionen anderer Datenbanktreiber wie mysqli_connect() mit dem Präfix p:.

Wichtig: Da die Verbindung nach Skriptende nicht automatisch bereinigt wird, können offene Transaktionen oder Sperren aus einem vorherigen Skript noch aktiv sein. Es empfiehlt sich daher, nach dem Abrufen einer persistenten Verbindung den Zustand der Verbindung sicherzustellen (z. B. durch Rollback offener Transaktionen).

Parameter

Name Typ Default Beschreibung
$host Pflicht string Hostname oder IP-Adresse des CUBRID-Servers, z. B. "localhost" oder "192.168.1.100".
$port Pflicht int Port-Nummer des CUBRID-Servers. Der Standardport von CUBRID ist 33000.
$dbname Pflicht string Name der CUBRID-Datenbank, zu der eine Verbindung hergestellt werden soll.
$userid string Benutzername für die Datenbankverbindung. Wird dieser Parameter weggelassen, wird der Standardbenutzer verwendet.
$passwd string Passwort des angegebenen Datenbankbenutzers. Wird dieser Parameter weggelassen, wird ein leeres Passwort verwendet.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine CUBRID-Verbindungsressource zurück, die für nachfolgende Datenbankoperationen verwendet werden kann. Im Fehlerfall wird false zurückgegeben.

Beispiele

Einfache persistente Verbindung zu CUBRID herstellen

<?php
$host   = 'localhost';
$port   = 33000;
$dbname = 'demodb';
$user   = 'dba';
$pass   = '';

$conn = cubrid_pconnect($host, $port, $dbname, $user, $pass);

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

echo 'Persistente Verbindung erfolgreich hergestellt.' . PHP_EOL;

// Datenbankoperation ausführen
$result = cubrid_query('SELECT * FROM stadium LIMIT 5', $conn);
while ($row = cubrid_fetch_assoc($result)) {
    echo $row['name'] . PHP_EOL;
}

// Hinweis: cubrid_disconnect() schließt die persistente Verbindung NICHT dauerhaft
cubrid_disconnect($conn);
Persistente Verbindung erfolgreich hergestellt. Olympic Stadium ...

Persistente Verbindung mit Rollback offener Transaktionen absichern

<?php
$conn = cubrid_pconnect('localhost', 33000, 'demodb', 'dba', '');

if ($conn === false) {
    die('Verbindungsfehler: ' . cubrid_error());
}

// Offene Transaktionen aus einem vorherigen Skript zurückrollen
cubrid_rollback($conn);

// Auto-Commit aktivieren
cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_TRUE);

// Sichere Nutzung der wiederverwendeten Verbindung
$sql    = 'SELECT host_year, host_city FROM olympic ORDER BY host_year DESC LIMIT 3';
$result = cubrid_query($sql, $conn);

if ($result) {
    while ($row = cubrid_fetch_assoc($result)) {
        printf('Jahr: %d, Stadt: %s%s', $row['host_year'], $row['host_city'], PHP_EOL);
    }
    cubrid_free_result($result);
}
Jahr: 2004, Stadt: Athens Jahr: 2000, Stadt: Sydney Jahr: 1996, Stadt: Atlanta

// Wichtig · Fallstricke

Persistenz-Fallstrick: Da persistente Verbindungen nicht automatisch bereinigt werden, können Transaktionen, Sperren oder Sitzungsvariablen aus einem vorherigen Skript noch aktiv sein. Führen Sie nach dem Abrufen einer persistenten Verbindung stets cubrid_rollback() aus oder stellen Sie sicher, dass Auto-Commit aktiviert ist.

Verbindungspool-Verwaltung: Wird ein Skript mit einer persistenten Verbindung abrupt beendet (z. B. durch exit() oder einen Fehler), verbleibt die Verbindung im Pool. Dies kann bei vielen parallelen Anfragen zu Verbindungserschöpfung führen, wenn der Server eine maximale Anzahl gleichzeitiger Verbindungen begrenzt.

Sicherheit: Speichern Sie Zugangsdaten (Benutzer, Passwort) nie direkt im Quellcode. Verwenden Sie Konfigurationsdateien außerhalb des Webroot-Verzeichnisses oder Umgebungsvariablen.