Signatur
Beschreibung
ociplogon ist ein veralteter Alias der Funktion oci_pconnect und verhält sich in jeder Hinsicht identisch. Er stellt eine persistente Verbindung zu einer Oracle-Datenbank her: Wird eine Verbindung mit denselben Credentials bereits in einem anderen PHP-Prozess (Web-Worker) offen gehalten, wird diese wiederverwendet, anstatt eine neue aufzubauen. Das reduziert den Verbindungsaufbau-Overhead bei häufig aufgerufenen Skripten erheblich.
Da es sich um einen Alias handelt, werden alle Parameter, Rückgabewerte und Fehlerbehandlungen vollständig von oci_pconnect geerbt. Persistente Verbindungen werden am Ende des Skripts nicht geschlossen, sondern für spätere Anfragen im Pool gehalten.
Wichtig: Die Verwendung dieses Alias ist seit PHP 8.0 als veraltet (deprecated) markiert. Neuer Code sollte stets oci_pconnect direkt aufrufen, um Kompatibilitätsprobleme mit zukünftigen PHP-Versionen zu vermeiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $username Pflicht | string | Oracle-Benutzername für die Authentifizierung. | |
| $password Pflicht | string | Passwort des angegebenen Oracle-Benutzers. | |
| $connection_string | string | Oracle-Verbindungszeichenkette (TNS-Name, Easy Connect oder vollständiger Connect-Descriptor). Wird dieser Wert weggelassen, verwendet PHP die Umgebungsvariable TWO_TASK (Unix) bzw. LOCAL (Windows). |
|
| $character_set | string | Zeichensatz, der für die Verbindung verwendet werden soll (z. B. AL32UTF8). Leer bedeutet, dass der Standardzeichensatz der Datenbank übernommen wird. |
|
| $session_mode | int | OCI_DEFAULT | Verbindungsmodus. Mögliche Werte sind OCI_DEFAULT, OCI_SYSOPER und OCI_SYSDBA. Letztere erfordern entsprechende Oracle-Privilegien. |
Rückgabewert
false zurückgegeben.Beispiele
Persistente Oracle-Verbindung mit ociplogon
<?php
// Veralteter Alias – in neuem Code oci_pconnect() bevorzugen
$conn = ociplogon('hr', 'geheim123', 'localhost/XEPDB1', 'AL32UTF8');
if ($conn === false) {
$err = oci_error();
trigger_error('Oracle-Verbindungsfehler: ' . htmlspecialchars($err['message']), E_USER_ERROR);
}
$stmt = oci_parse($conn, 'SELECT SYSDATE FROM dual');
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC);
echo 'Aktuelles Datenbankdatum: ' . $row['SYSDATE'] . PHP_EOL;
oci_free_statement($stmt);
// Persistente Verbindung wird NICHT mit oci_close() dauerhaft getrennt
// oci_close($conn); // Vermindert lediglich den Referenz-Counter
Migration zu oci_pconnect (empfohlen)
<?php
// Alten Code mit ociplogon ersetzen:
// $conn = ociplogon('scott', 'tiger', 'mydb');
// Moderner, empfohlener Weg:
$conn = oci_pconnect('scott', 'tiger', 'mydb', 'AL32UTF8');
if ($conn === false) {
$err = oci_error();
throw new RuntimeException('Verbindung fehlgeschlagen: ' . $err['message']);
}
echo 'Verbindung erfolgreich hergestellt.' . PHP_EOL;
// Wichtig · Fallstricke
Deprecated: ociplogon ist ein veralteter Alias und sollte in neuem Code nicht mehr verwendet werden. Nutze stattdessen oci_pconnect.
Sicherheitshinweis: Persistente Verbindungen teilen sich den Verbindungs-Pool über mehrere Requests hinweg. Achte darauf, dass keine offenen Transaktionen am Ende eines Skripts verbleiben, da diese von einem späteren Request unbeabsichtigt fortgeführt werden könnten. Rufe im Fehlerfall oci_rollback() auf, bevor das Skript endet.
Persistente Verbindungen sind nicht für Szenarien geeignet, in denen pro Anfrage ein exklusiver Datenbank-Session-Zustand benötigt wird (z. B. DBMS_SESSION.SET_IDENTIFIER ohne Zurücksetzen).