(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_pconnect — Connect to an Oracle database using a persistent connection
$username
, string $password
[, string $connection_string
[, string $character_set
[, int $session_mode
]]] )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 FastCGI/CGI process). See the Persistent Database Connections section for more information.
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, verwendet PHP Umgebungsvariablen wie
TWO_TASK
(unter Linux), LOCAL
(unter Windows)
oder ORACLE_SID
um die Oracle-Instanz mit der verbunden werden soll
zu ermitteln.
Um die benannte Easy Connect Methode zu verwenden, muss PHP gegen die Clientbibliotheken von Oracle 10g oder höher gelinkt sein. Die Easy Connect Zeichenfolge 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]. Service name kann bestimmt 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 $ORACLE_HOME/network/admin sowie /etc beinhaltet. Alternativ kann TNS_ADMIN auf einen Wert gesetzt werden, damit $TNS_ADMIN/tnsnames.ora gelesen wird. Es muss sichergestellt sein, dass der Webserver Leseberechtigung für die Datei besitzt.
character_set
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
und OCI_SYSDBA
.
Falls entweder OCI_SYSOPER
oder
OCI_SYSDBA
angegeben wurden wird diese Funktion
versuchen die priviligierte Verbindung mit externen Credentials aufzubauen.
Um diese einzuschalten muss man
oci8.privileged_connect
auf On 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 Schalter OCI_CRED_EXT
kann nur mit
dem Benutzernamen "/" und einem leeren Passwort verwendet werden.
oci8.privileged_connect
kann entweder On oder Off sein.
OCI_CRED_EXT
kann mit
OCI_SYSOPER
oder
OCI_SYSDBA
kombiniert werden.
OCI_CRED_EXT
ist auf Windows-Systemen aus
sicherheitsgründen nicht unterstützt.
Returns a connection identifier or FALSE
on error.
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.
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.