Start · Sprachen · PHP · Referenz · ociplogon

ociplogon

Funktion

Alias von <code>oci_pconnect</code> — stellt eine persistente Verbindung zu einer Oracle-Datenbank her.

seit PHP 5.0.0 Kategorie: db

Signatur

ociplogon(string $username, string $password, string $connection_string = '', string $character_set = '', int $session_mode = OCI_DEFAULT): resource|false

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

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine OCI8-Verbindungsressource zurück, die mit den OCI8-Funktionen verwendet werden kann. Im Fehlerfall wird 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
Aktuelles Datenbankdatum: 15-JUN-25

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;
Verbindung erfolgreich hergestellt.

// 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).