O comportamento destas funções é afetado pelas configurações do php.ini.
Nome | Padrão | Modificável | Registro de Alterações |
---|---|---|---|
oci8.connection_class | "" | INI_ALL |
|
oci8.default_prefetch | "100" | INI_SYSTEM |
|
oci8.events | Off | INI_SYSTEM |
|
oci8.max_persistent | "-1" | INI_SYSTEM |
|
oci8.old_oci_close_semantics | Off | INI_SYSTEM |
Descontinuado a partir do PHP 8.1.0. |
oci8.persistent_timeout | "-1" | INI_SYSTEM |
|
oci8.ping_interval | "60" | INI_SYSTEM |
|
oci8.prefetch_lob_size | "0" | INI_SYSTEM |
Disponível desde o PECL OCI8 3.2. |
oci8.privileged_connect | Off | INI_SYSTEM |
|
oci8.statement_cache_size | "20" | INI_SYSTEM |
Aqui está uma breve explicação das diretivas de configuração.
oci8.connection_class
string
Este texto definido pelo usuário deve sempre ser definido ao usar o Oracle Database Resident Connection Pooling (DRCP). Ele permite o subparticionamento do pool de conexões DRCP, permitindo que conexões persistentes OCI8 de uma aplicação reutilizem sessões de banco de dados de um script PHP anterior, proporcionando melhor escalabilidade. Quando uma aplicação usa um processo de pool de banco de dados usado anteriormente com uma classe de conexão diferente, as configurações da sessão, como por exemplo o formato de data padrão do Oracle, são redefinidas. Isso evita o compartilhamento acidental de informações entre diferentes aplicações.
Este valor pode ser definido no momento da execução com a função ini_set() antes da conexão.
Para usar o DRCP, o OCI8 deve estar vinculado às bibliotecas Oracle 11g
(ou posterior) e o banco de dados deve ser Oracle
11g (ou posterior). O pool de conexões DRCP deve ser
habilitado no banco de dados, oci8.connection_class
deve ser definido com a mesma string para todos os servidores web que executam a mesma
aplicação e a string de conexão OCI8 deve especificar o uso de um
servidor em pool. A aplicação deve usar conexões persistentes.
oci8.default_prefetch
int
Esta opção define o número padrão de linhas extras que serão
buscadas e armazenadas em cache automaticamente sempre que for feita uma solicitação
de baixo nível de dados do banco de dados. Definir um valor
0
desativa a pré-busca.
O valor de pré-busca não altera o número de linhas que funções como oci_fetch_array() retornam ao usuário; a pré-busca e o armazenamento em cache de linhas são tratados internamente no OCI8.
O valor pode ser definido por instrução com oci_set_prefetch() antes da execução da instrução.
Ao usar o Oracle Database 12c (ou posterior), o valor de
pré-busca definido pelo PHP pode ser substituído pelo arquivo
de configuração oraaccess.xml
do cliente Oracle. Consulte
a documentação da Oracle para obter mais detalhes.
Nota: Uma pré-busca maior pode resultar em melhor desempenho, ao custo de um aumento no uso de memória. Para consultas que retornam grandes quantidades de dados, o benefício de desempenho pode ser significativo.
oci8.events
bool
Usar On
permite que o PHP seja notificado de
eventos de Notificação Rápida de Aplicação (FAN) do banco de dados.
Sem FAN, quando uma instância de banco de dados ou nó de máquina falha inesperadamente, as aplicações PHP podem ser bloqueadas aguardando uma resposta do banco de dados até que o tempo limite do TCP expire. Com eventos FAN, as aplicações PHP são rapidamente notificadas sobre falhas que afetam suas conexões de banco de dados estabelecidas. A extensão OCI8 limpará conexões inutilizáveis no cache de conexões persistentes.
Ao usar On
, o banco de dados também precisa ser
configurado para postar eventos FAN.
O suporte FAN estará disponível quando o OCI8 estiver vinculado com bibliotecas Oracle 10gR2 (ou posterior) e conectado a banco de dados Oracle 10gR2 (ou posterior).
oci8.max_persistent
int
O número máximo de conexões OCI8 persistentes por processo PHP. Definir esta opção como -1 significa que não há limite.
oci8.old_oci_close_semantics
bool
Esta opção controla o comportamento de oci_close(). Ativá-lo significa que oci_close() não fará nada; a conexão não será fechada até o final do script. Isto é apenas para compatibilidade com versões anteriores. Se for necessário habilitar esta configuração, é fortemente recomendado o ajuste das chamadas a oci_close() na aplicação em vez de habilitar esta opção.
oci8.persistent_timeout
int
O número máximo de segundos que um processo PHP pode manter aberta uma conexão persistente ociosa. Definir esta opção como -1 significa que conexões persistentes ociosas serão retidas até que o processo PHP termine ou que a conexão seja explicitamente fechada com oci_close().
Nota: No PHP, a expiração de recursos ociosos não é baseada em alarme. Ocorre quando o PHP termina o processamento de um script e verifica o timestamp da última utilização dos recursos. Portanto, existe um paradoxo de que conexões ociosas só podem ser fechadas quando há alguma atividade (embora não necessariamente relacionada ao OCI8) no processo PHP. Se houver mais de um processo PHP, cada um deverá ser ativado individualmente para acionar a expiração de seus recursos ociosos. A introdução do Database Resident Connection Pooling (DRCP) no Oracle 11g resolve os problemas de memória e recursos que
oci8.max_persistent
eoci8.persistent_timeout
anteriormente tentaram superar.
oci8.ping_interval
int
O número de segundos que devem passar antes de emitir um ping durante oci_pconnect(). Um ping garante que a conexão com o banco de dados seja válida. Quando definido como 0, as conexões persistentes serão executadas sempre que oci_pconnect() for chamada. Para desativar completamente os pings, defina esta opção como -1.
Nota: Desabilitar pings permite que oci_pconnect() opere com a maior eficiência, mas o PHP pode não ser capaz de detectar conexões inutilizáveis, como as causadas por queda de rede, ou se o banco de dados Oracle caiu desde que o PHP foi conectado, até que a conexão seja usada posteriormente no script. Consulte a documentação de oci_pconnect() para obter mais informações.
oci8.prefetch_lob_size
int
Este é um parâmetro de ajuste que afeta o buffer interno de dados LOB. Aumentar esse valor pode melhorar o desempenho da busca de LOBs menores, reduzindo as viagens de ida e volta entre o PHP e o banco de dados. O uso da memória mudará.
O valor afeta LOBs retornados como instâncias OCILob e também aqueles
retornados usando OCI_RETURN_LOBS
.
O valor pode ser definido por instrução com oci_set_prefetch_lob() antes da execução da instrução.
Nota: Use com Oracle Database 12.2 ou posterior.
oci8.privileged_connect
bool
Esta opção permite que as conexões usem as credenciais externas
privilegiadas
OCI_SYSOPER
ou OCI_SYSDBA
.
Nota: Definir isso como
On
pode permitir que scripts em servidores web executados com os privilégios de usuário do sistema operacional apropriados se conectem como usuários privilegiados do banco de dados sem exigir uma senha do banco de dados. Isso pode ser um risco à segurança.
oci8.statement_cache_size
int
Esta opção permite o cache de instruções e especifica quantas instruções devem ser armazenadas em cache. Para desabilitar o cache de instruções basta definir esta opção como 0.
O cache de instruções elimina a necessidade de transmitir o texto da instrução ao banco de dados e elimina a necessidade de transmitir quaisquer metadados sobre a instrução de volta ao PHP. Isto pode melhorar significativamente o desempenho geral do sistema em aplicações que reutilizam instruções durante o tempo de vida de uma conexão. Alguns "cursores" extras de banco de dados podem ser ser mantidas abertas sob a suposição de que as instruçõs serão reutilizadas.
Configure esse valor para o tamanho do conjunto de instruções de trabalho usado pela aplicação. Definir um valor muito pequeno pode fazer com que as instruções sejam liberadas do cache antes de serem reutilizadas.
Esta opção é mais útil com conexões persistentes.
Ao usar o Oracle Database 12c (ou posterior), esse
valor pode ser substituído e ajustado automaticamente pelo
arquivo oraaccess.xml
do cliente Oracle. Consulte a
documentação da Oracle para obter mais detalhes.