array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.oci-pconnect.php', 1 => 'oci_pconnect', ), 'up' => array ( 0 => 'ref.oci8.php', 1 => 'Funções OCI8', ), 'prev' => array ( 0 => 'function.oci-password-change.php', 1 => 'oci_password_change', ), 'next' => array ( 0 => 'function.oci-register-taf-callback.php', 1 => 'oci_register_taf_callback', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/oci8/functions/oci-pconnect.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_pconnect — Connect to an Oracle database using a persistent connection
$username
,$password
,$connection_string
= null
,$encoding
= "",$session_mode
= OCI_DEFAULT
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.
username
The Oracle user name.
password
The password for username
.
connection_string
Contém
a instância do Oracle
à qual se conectar. Pode ser
uma » string Easy
Connect ou um Connect Name do
arquivo tnsnames.ora ou o nome de uma instância
local do Oracle.
Se não especificado ou null
, o PHP usará
variáveis de ambiente como TWO_TASK
(no Linux)
ou LOCAL
(no Windows)
e ORACLE_SID
para determinar a
instância do Oracle
à qual se conectar.
Para usar o método de nomenclatura Easy Connect, o PHP precisa ter sido compilado com as bibliotecas
Oracle Client 10g ou superiores. A string Easy Connect para o Oracle
10g tem o formato:
[//]nome_do_servidor[:porta][/nome_do_servico]. A partir do Oracle
11g a sintaxe é:
[//]nome_do_servidor[:porta][/nome_do_servico][:tipo_de_servidor][/nome_da_instancia].
Outras opções foram introduzidas com o Oracle 19c, incluindo as configurações de timeout
e keep-alive. Consulte a documentação do Oracle. Os nomes dos serviços podem ser encontrados executando
o utilitário Oracle lsnrctl status
na máquina do servidor de
banco de dados.
O arquivo tnsnames.ora pode estar no caminho de pesquisa Oracle Net,
que
inclui /seu/caminho/para/instantclient/network/admin, $ORACLE_HOME/network/admin
e /etc. Como alternativa, defina TNS_ADMIN
para que $TNS_ADMIN/tnsnames.ora possa ser lido. Certifique-se de que o servidor
web tem acesso de leitura ao arquivo.
encoding
Determina o conjunto de caracteres usado pelas bibliotecas Oracle Client. O conjunto de caracteres não precisa corresponder ao conjunto de caracteres usado pelo banco de dados. Se não corresponderem, o Oracle fará o possível para converter os dados de e para o conjunto de caracteres do banco de dados. Dependendo dos conjuntos de caracteres, isso pode não fornecer resultados utilizáveis. A conversão também adiciona alguma sobrecarga de tempo.
Se não for especificado, as
bibliotecas Oracle Client determinam um conjunto de caracteres a partir da
variável de ambiente NLS_LANG
.
Passar este parâmetro pode reduzir o tempo necessário para conectar.
session_mode
Este
parâmetro está disponível a partir do PHP 5 (PECL OCI8 1.1) e aceita os
seguintes valores: OCI_DEFAULT
,
OCI_SYSOPER
e OCI_SYSDBA
.
Se OCI_SYSOPER
ou
OCI_SYSDBA
forem especificadas, esta função tentará
estabelecer uma conexão privilegiada usando credenciais externas.
Conexões privilegiadas estão desabilitadas por padrão. Para habilitá-las
é preciso configurar oci8.privileged_connect
para On
.
O PHP 5.3 (PECL OCI8 1.3.4) introduziu o valor
de modo OCI_CRED_EXT
. Ele informa ao Oracle para usar
autenticação External ou OS, que deve ser configurada no
banco de dados. A flag OCI_CRED_EXT
só pode ser usada
com o usuário "/" e uma senha vazia.
oci8.privileged_connect
pode ser On
ou Off
.
OCI_CRED_EXT
pode ser combinado com os modos
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: 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.