Signatur
Beschreibung
cubrid_pconnect_with_url() stellt eine persistente Verbindung zu einem CUBRID-Datenbankserver her. Im Gegensatz zu cubrid_connect_with_url() wird die Verbindung am Ende des PHP-Skripts nicht geschlossen, sondern im Verbindungspool gehalten und bei nachfolgenden Anfragen mit identischen Verbindungsparametern wiederverwendet. Dies reduziert den Overhead durch wiederholtes Verbindungsaufbauen deutlich und verbessert die Performance bei vielen kurzen Anfragen.
Die Verbindungs-URL folgt dem Format: CUBRID:<host>:<port>:<dbname>:<userid>:<passwd>:[?<property>]. Benutzername und Passwort können entweder in der URL kodiert oder als separate Parameter übergeben werden; separate Parameter überschreiben dabei die URL-Angaben.
Persistente Verbindungen sind besonders sinnvoll in Webanwendungen mit hohem Anfragevolumen, bei denen die Datenbankverbindung einen nennenswerten Teil der Antwortzeit ausmacht. PHP verwaltet den Verbindungspool automatisch; werden Benutzername und Passwort in der URL kodiert, sollte die URL nicht in Logs oder Fehlermeldungen ausgegeben werden, um Zugangsdaten nicht preiszugeben.
Zusätzliche Verbindungseigenschaften wie autocommit, login_timeout oder query_timeout können als Query-Parameter an die URL angehängt werden, z. B. ?autocommit=false&login_timeout=5000.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_url Pflicht | string | Die Verbindungs-URL im Format CUBRID:<host>:<port>:<dbname>:<userid>:<passwd>:[?<property>]. Host, Port und Datenbankname sind Pflichtangaben; Benutzer und Passwort können leer gelassen und stattdessen über die separaten Parameter übergeben werden. |
|
| $userid | string | null | Benutzername für die Datenbankverbindung. Wird angegeben, überschreibt dieser Wert einen eventuell in der URL enthaltenen Benutzernamen. |
| $passwd | string | null | Passwort für die Datenbankverbindung. Wird angegeben, überschreibt dieses Wert ein eventuell in der URL enthaltenes Passwort. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache persistente Verbindung via URL
<?php
$conn_url = 'CUBRID:localhost:33000:demodb:::?autocommit=true';
$userid = 'dba';
$passwd = '';
$conn = cubrid_pconnect_with_url($conn_url, $userid, $passwd);
if ($conn === false) {
$error = cubrid_error();
die('Verbindung fehlgeschlagen: ' . $error);
}
echo 'Persistente Verbindung erfolgreich hergestellt.' . PHP_EOL;
$result = cubrid_query('SELECT * FROM nation LIMIT 5', $conn);
while ($row = cubrid_fetch_assoc($result)) {
echo $row['name'] . PHP_EOL;
}
cubrid_close_request($result);
// Persistente Verbindung wird NICHT durch cubrid_disconnect() geschlossen
?>
Verbindung mit Timeout-Optionen und Fehlerbehandlung
<?php
// Zugangsdaten separat übergeben — URL enthält keine Credentials
$host = 'db.example.com';
$port = 33000;
$dbname = 'shopdb';
$url = "CUBRID:{$host}:{$port}:{$dbname}:::?login_timeout=3000&query_timeout=5000";
$conn = cubrid_pconnect_with_url($url, 'appuser', 'geheimesPasswort');
if ($conn === false) {
error_log('CUBRID Verbindungsfehler: ' . cubrid_error());
http_response_code(503);
exit('Datenbankdienst vorübergehend nicht verfügbar.');
}
// Datenbankversion zur Überprüfung ausgeben
$ver = cubrid_get_db_parameter($conn, CUBRID_PARAM_ISOLATION_LEVEL);
echo 'Verbindung OK, Isolation Level: ' . $ver . PHP_EOL;
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Wenn Benutzername und Passwort direkt in der Verbindungs-URL kodiert werden, darf diese URL niemals in Fehlerausgaben, Log-Dateien oder HTTP-Antworten erscheinen, da sie Klartext-Zugangsdaten enthält. Verwende stattdessen die separaten Parameter $userid und $passwd und speichere diese außerhalb des Webroot (z. B. in Umgebungsvariablen).
Persistenz-Verhalten: PHP schließt persistente Verbindungen am Ende eines Skripts nicht automatisch — cubrid_disconnect() hat bei persistenten Verbindungen keine Wirkung. Die Verbindung kehrt in den Pool zurück. Transaktionen, die nicht explizit committet oder zurückgerollt wurden, können den nächsten Request beeinflussen; stelle daher sicher, dass jede Transaktion explizit abgeschlossen wird.
URL-Format-Fehler: Ein falsch formatierter URL-String führt zu false als Rückgabewert. Prüfe das Format sorgfältig — insbesondere die Doppelpunkt-Trenner, auch wenn Felder wie Benutzer und Passwort leer sind, müssen die Doppelpunkte vorhanden sein (:::?).