(PHP 5, 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
Contiene l'istanza Oracle a cui collegarsi. Può essere una » stringa Easy Connect, oppure un Connect Name dal file tnsnames.ora, o il nome di una istanza Oracle locale.
Se non è specificato, PHP usa
le variabili d'ambiente come TWO_TASK
(su Linux)
o LOCAL
(su Windows)
e ORACLE_SID
per determinare
l'istanza Oracle a cui collegarsi.
Per utilizzare il metodo Easy Connect, PHP deve essere linkato con le librerie Client di Oracle 10g o successivi. La stringa Easy Connect per Oracle 10g ha la forma: [//]host_name[:port][/service_name]. Con Oracle 11g, ha la forma: [//]host_name[:port][/service_name][:server_type][/instance_name]. I nomi dei servizi possono essere trovati eseguendo l'applicazione di Oracle lsnrctl status sul server contenente il database.
Il file tnsnames.ora può essere nel percorso di ricerca Oracle Net, che include $ORACLE_HOME/network/admin e /etc. In alternativa si imposti TNS_ADMIN in modo che $TNS_ADMIN/tnsnames.ora sia letto. Assicurarsi che il dameon web abbia accesso in lettura al file.
character_set
Determina il set di caratteri utilizzato dalle librerie Client di Oracle. Non è necessario che il set di caratteri corrisponda a quello usato dal database. Se non corrisponde, Oracle fara il suo meglio per convertire i dati da e verso il set di caratteri del database. A seconda del set di caratteri, ciò potrebbe dare risultati non utilizzabili. La conversione inoltre inecessita di tempo aggiuntivo.
Se non specificato, le
librerie Client di Oracle determinano un set di caratteri dalla
variabile d'ambiente NLS_LANG
.
Fornire questo parametro può ridurre il tempo di connessione.
session_mode
Questo
parametro è disponibile da PHP 5 (PECL OCI8 1.1) e accetta i
seguenti valori: OCI_DEFAULT
,
OCI_SYSOPER
e OCI_SYSDBA
.
Se OCI_SYSOPER
o
OCI_SYSDBA
sono specificate, questa funzione tenta
di creare connessioni privilegiate usando delle credenziali esterne.
Le connessioni privilegiate sono disabilitate per default. Per abilitarle
occorre impostare oci8.privileged_connect
a On.
PHP 5.3 (PECL OCI8 1.3.4) ha introdotto il
valore OCI_CRED_EXT
. Questo dice ad Oracle di usare
l'autenticazione esterna o del Sistema Operativo, che deve essere configurata nel
database. Il flag OCI_CRED_EXT
può essere usato solo con
username "/" e una password vuota.
oci8.privileged_connect
può essere On oppure Off.
OCI_CRED_EXT
può essere combinato ai modi
OCI_SYSOPER
o
OCI_SYSDBA
.
OCI_CRED_EXT
non è ammessa su Windows per
ragioni di sicurezza.
Returns a connection identifier or FALSE
on error.
Example #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.
Nota: 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.