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