oci_pconnect
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_pconnect — Connect to an Oracle database using a persistent connection
Beschreibung
string
$username
,string
$password
,?string
$connection_string
= null
,string
$encoding
= "",int
$session_mode
= OCI_DEFAULT
): resource|false
Creates a persistent connection to an Oracle server and logs on.
Persistent connections are cached and re-used between requests, resulting in reduced overhead on each page load; a typical PHP application will have a single persistent connection open against an Oracle server per Apache child process (or PHP FPM process). See the OCI8 Connection Handling and Connection Pooling section for more information.
Parameter-Liste
-
username
-
The Oracle user name.
-
password
-
The password for
username
. -
connection_string
-
Beinhaltet die
Oracle-Instanz
, mit der verbunden werden soll. Dies kann eine » Easy-Connect-Zeichenkette, ein Connect-Name aus der Datei tnsnames.ora oder der Name einer lokalen Oracle-Instanz sein.Wenn dies nicht angegebe wird oder
null
ist, verwendet PHP Umgebungsvariablen wieTWO_TASK
(unter Linux),LOCAL
(unter Windows) oderORACLE_SID
um dieOracle-Instanz
zu ermitteln, mit der verbunden werden soll.Um die benannte Easy Connect Methode zu verwenden, muss PHP gegen die Clientbibliotheken von Oracle 10g oder höher gelinkt sein. Die Easy-Connect-Zeichenkette für Oracle 10g hat den Aufbau: [//]host_name[:port][/service_name]. Für Oracle 11g ist die Syntax: [//]host_name[:port][/service_name][:server_type][/instance_name]. Weitere Optionen wurden mit Oracle 19c eingeführt, darunter die timeout- und die keep-alive-Einstellungen. Siehe dazu die Oracle-Dokumentation. Die Servicenamen können ermittelt werden, indem man das Oracle-Hilfswerkzeug
lsnrctl status
auf dem Datenbankserver ausführt.Die Datei tnsnames.ora kann sich im Oracle Net Suchpfad befinden, welcher /der/pfad/zu/instantclient/network/admin, $ORACLE_HOME/network/admin sowie /etc beinhaltet. Alternativ kann
TNS_ADMIN
so gesetzt werden, dass $TNS_ADMIN/tnsnames.ora gelesen wird. Es muss sichergestellt sein, dass der Webserver eine Leseberechtigung für die Datei besitzt. -
encoding
-
Bestimmt den Zeichensatz, der von den Oracle Client Bibliotheken verwendet wird. Dieser Zeichensatz muss nicht dem von der Datenbank verwendeten Zeichensatz entsprechen. Wenn diese nicht übereinstimmen, wird Oracle bestmöglich versuchen, die Daten in den Datenbankzeichensatz zu übersetzen. Abhängig von den Zeichensätzen kann dies zu unbrauchbaren Ergebnissen führen. Diese Konvertierung führt auch zu einem erhöhten Zeitbedarf.
Falls nicht angegeben, werden die Oracle Client Bibliotheken versuchen, den Zeichensatz aus der Umgebungsvariablen
NLS_LANG
auszulesen.Die Übergabe dieses Parameters verringert die Zeit für den Verbindungsaufbau.
-
session_mode
-
Dieser Parameter ist seit PHP 5 (PECL OCI8 1.1) verfügbar und akzeptiert die folgenden Werte:
OCI_DEFAULT
,OCI_SYSOPER
undOCI_SYSDBA
. Falls entwederOCI_SYSOPER
oderOCI_SYSDBA
angegeben wurden wird diese Funktion versuchen die priviligierte Verbindung mit externen Credentials aufzubauen. Um diese einzuschalten muss man oci8.privileged_connect aufOn
setzen.PHP 5.3 (PECL OCI8 1.3.4) hat den Wert
OCI_CRED_EXT
eingeführt. Dies konfiguriert Oracle dazu eine externe oder Os-Authentifizierung vorzunehmen, welche in der Datenbank konfiguriert werden muss. Der SchalterOCI_CRED_EXT
kann nur mit dem Benutzernamen "/" und einem leeren Passwort verwendet werden. oci8.privileged_connect kann entwederOn
oderOff
sein.OCI_CRED_EXT
kann mitOCI_SYSOPER
oderOCI_SYSDBA
kombiniert werden.OCI_CRED_EXT
ist auf Windows-Systemen aus sicherheitsgründen nicht unterstützt.
Rückgabewerte
Returns a connection identifier or false
on error.
Beispiele
Beispiel #1 Basic oci_pconnect() Example using Easy Connect syntax
<?php
// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_pconnect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
See oci_connect() for further examples of parameter usage.
Anmerkungen
Hinweis: Starting with PHP 5.1.2 and PECL OCI8 1.1, the lifetime and maximum number of persistent Oracle connections per PHP process can be tuned by setting the following configuration values: oci8.persistent_timeout, oci8.ping_interval and oci8.max_persistent.
Siehe auch
- oci_connect() - Connect to an Oracle database
- oci_new_connect() - Connect to the Oracle server using a unique connection