Start · Sprachen · PHP · Referenz · cubrid_pconnect_with_url

cubrid_pconnect_with_url

Funktion

Öffnet eine dauerhafte (persistente) Verbindung zu einem CUBRID-Datenbankserver über eine URL-formatierte Verbindungszeichenfolge.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_pconnect_with_url(string $conn_url, string $userid = null, string $passwd = null): resource|false

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

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine CUBRID-Verbindungsressource zurück, die für alle weiteren CUBRID-Funktionsaufrufe verwendet werden kann. Im Fehlerfall wird 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
?>
Persistente Verbindung erfolgreich hergestellt. Australia Brazil ...

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;
?>
Verbindung OK, Isolation Level: 4

// 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 (:::?).