(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
]]] ) : resourceCreates 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.
username
The Oracle user name.
password
The password for username
.
connection_string
Contém
uma Oracle instance
a conectar. Isso pode ser
uma » Easy Connect
string ou num Connect Name
de um arquivo tnsnames.ora, ou ainda o nome de uma instância
local Oracle.
Se não especificado o PHP utilizará
variáveis de ambiente como TWO_TASK
(no Linux)
ou LOCAL
(no Windows)
e ORACLE_SID
para determinar a
Oracle instance
a conectar.
Para utilizar o método via Easy Connect, o PHP precisa ter sido compilado com as bibliotecas cliente Oracle
10g ou maiores. Uma string Easy Connect para o Oracle
10g tem a forma:
[//]host_name[:port][/service_name]. Do Oracle
11g a sintaxe é:
[//]host_name[:port][/service_name][:server_type][/instance_name].
Nomes de serviço podem ser encontrados ao rodar o utilitário
Oracle lsnrctl status
na máquina servidora
do banco de dados.
O arquivo tnsnames.ora pode estar em um Oracle Net
search path, que
inclui $ORACLE_HOME/network/admin
e /etc. Alternativamente é possível
configurarTNS_ADMIN
de forma
que $TNS_ADMIN/tnsnames.ora seja encontrado. Tenha certeza
que o servidor web tem acesso de escrita nesse arquivo.
character_set
Determina o conjunto de caracteres utilizado pelas bibliotecas Oracle Client. O conjunto de caracteres não precisa bater com o utilizado pelo banco de dados. Se eles não baterem, o Oracle fará a melhor conversão possível dos dados de e para o conjunto de caracteres do banco de dados. Dependendo dos charsets isso pode ocasionar dados não utilizáveis. Conversão também aumenta o processamento.
Se não especificado, as
bibliotecas Oracle Client determinam o charset da variável de ambiente
NLS_LANG
.
Passar esse parâmetro pode reduzir o tempo necessário a conexão.
session_mode
Este
parâmetro está disponível desde o PHP 5 (PECL OCI8 1.1) e aceita os seguintes
valores: OCI_DEFAULT
,
OCI_SYSOPER
e OCI_SYSDBA
.
Caso esteja especificado OCI_SYSOPER
ou
OCI_SYSDBA
, esta função tentará
estabelecer uma conexão privilegiada utilizando credenciais externas.
Conexões privilegiadas estão desativadas por padrão. Para ativá-las é preciso
configurar oci8.privileged_connect
para On
.
O PHP 5.3 (PECL OCI8 1.3.4) introduziu o valor
OCI_CRED_EXT
. Isso informa o Oracle para utilizar
autenticação External ou OS, que precisa ser configurado no banco
de dados. A flag OCI_CRED_EXT
somente pode ser utilizado
com o usuário "/" e uma senha em branco.
oci8.privileged_connect
pode estar On
ou Off
.
OCI_CRED_EXT
pode ser combinado com
OCI_SYSOPER
ou
OCI_SYSDBA
.
OCI_CRED_EXT
não é suportado no Windows por
razões de segurança.
Returns a connection identifier or false
on error.
Exemplo #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.