El comportamiento de estas funciones se ve afectado por la configuración de php.ini.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
oci8.connection_class | "" | PHP_INI_ALL | Disponible desde PHP 5.3 (PECL OCI8 1.3). |
oci8.default_prefetch | "100" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.events | Off | PHP_INI_SYSTEM | Disponible desde PHP 5.3 (PECL OCI8 1.3). |
oci8.max_persistent | "-1" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.old_oci_close_semantics | Off | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.ping_interval | "60" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.privileged_connect | Off | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.2 (PECL OCI8 1.1). |
He aquí una breve explicación de las directivas de configuración.
oci8.connection_class
string
Este texto definido por el usuario es utilizado por las conexiones de Oracle 11g Database Resident Connection Pooling (DRCP) para subparticionar la agrupación de conexiones. Permite conexiones persistentes de OCI8 desde una aplicación para reutilizar las sesiones de la base de datos de un script anterior de PHP, proporcionando una mejor escalabilidad. Cuando una aplicación usa un proceso de una agrupación de una base de datos anteriormente usado con una clase de conexión diferente, las configuraciones de sesión, tales como el formato de fecha predeterminado de Oracle, son reiniciadas. Esto previene de la compartición accidental de información entre diferentes aplicaciones.
El valor puede establecerse en tiempo de ejecución con ini_set() entes de la conexión.
Para usar DRCP, OCI8 debe vincularse con las bibliotecas de Oracle 11g, y la base de datos debe ser Oracle 11g. La agrupación de conexiones debe habilitarse en la base de datos, oci8.connection_class debería establecerse a la misma cadena para todos los servidores web que ejecuten la misma aplicación, y la cadena de conexión de OCI8 debe especificar el suo de un servidor de la agrupación.
oci8.default_prefetch
int
Esta opción establece el número predeterminado de filas extra que se obtendrán y almacenarán en caché automáticamente siempre que se haga una petición de bajo nivel para datos de la base de datos. Establecer un valor de 0 desactiva la precarga.
El valor de la precarga no altera el número de filas que son devueltas al usuario por funciones como oci_fetch_array(); la precarga y el almacenamiento en caché de filas son manejados internamente por OCI8.
El valor puede ser establecido para cada sentencia con oci_set_prefetch() antes de la ejecución de dicha sentencia.
En PHP 5.3 (PECL OCI8 1.3.4), el valor predeterminado estaba aumentado desde 10 hasta 100.
En PHP 5.3.2 (PECL OCI8 1.4), el valor mínimo establecible estaba reducido desde 1 hasta 0, permitiendo la que precarga se desactivara.
Al usar Oracle Database 12c, el valor de precarga establecido por PHP puede ser sobrescrito por el fichero de configuración del cliente oraaccess.xml de Oracle. Consulte la documentación de Oracle para más detalles.
Nota: Un valor de precarga más alto puede mejorar el rendimiento, con el coste del aumento del uso de memoria. Para consultas que devuelven gran cantidad de datos, el beneficio del rendimiento puede ser significativo.
oci8.events
boolean
Usar On permite que PHP sea informado de los eventos Fast Application Notification (FAN) de la base de datos.
Sin FAN, cuando una instancia de una base de datos o un nodo de una máquina fallan de forma impredecible, las aplicaciones de PHP podrían bloquearse esperando una respuesta de la base de datos hasta que el tiempo de espera de TCP expire. Con los eventos FAN, las aplicaciones de PHP son informadas rápidamente de fallos que afectan a sus conexiones de bases de datos establecidas. La extensión OCI8 limpiará las conexiones inservibles de la caché de conexiones persistentes.
Cuando se usa On, la base de datos debe también estar configurada para enviar eventos FAN.
El soporte para FAN está disponible cuando OCI8 está vinculada con la biblioteca de Oracle 10gR2 (o posterior) y conectada con Oracle Database 10gR2 (o posterior).
oci8.max_persistent
int
El número máximo de conexiones persistentes de OCI8 por proceso de PHP. Establecer esta opción a -1 significa que no existe límite.
oci8.old_oci_close_semantics
boolean
Esta opción controla el comportamiento de oci_close(). Habilitarla significa que oci_close() no hará nada; la conexión no será cerrada hasta que finalice el script. Esto es debido únicamente por razones de retrocompatibilidad. Si fuera necesario habilitar esta opción, se recomienda encarecidamente ajustar las llamadas de oci_close() en la aplicación en lugar de habilitar esta opción.
oci8.persistent_timeout
int
El número máximo de segundos que a un proceso de PHP se le permite mantener una conexión persistente inactiva abierta. Establecer esta opción a -1 significa que las conexiones persistentes inactivas serán retenidas hasta que el proceso de PHP finalice o la conexión sea explícitamente cerrada con oci_close().
Nota: En PHP, la caducidad de los recursos inactivos no está basada en alarmas. Esto ocurre cuando PHP termina de procesar un script y de comprobar la marca de tiempo del último recurso utilizado. Por lo tanto, existe una paradoja donde las conexiones inactivas solamente son cerradas cuando hay alguna actividad (aunque no necesariamente relacionada con OCI8) en el proceso de PHP. Si hay más de un proceso de PHP, cada uno debe ser activado individualmente para desencadenar la caducidad de sus recursos inactivos. La introducción de Database Resident Connection Pooling (DRCP) en Oracle 11g resuleve los problmas de memoria y de recursos que oci8.max_persistent y oci8.persistent_timeout intentaron superar anteriormente.
Nota: En PHP 5.3 (PECL OCI8 1.3), las conexiones persistentes pueden ser cerradas con oci_close().
oci8.ping_interval
int
El número de segundos que deben transcurrir antes de emitir un ping durante la ejecución de oci_pconnect(). Un ping se asegura de que la conexión de la base de datos es válida. Cuando se establece a 0, las conexiones persistentes serán comprobadas cada vez que se llame a oci_pconnect(). Para deshabilitar estas comprobaciones completamente, se ha de establecer esta opción a -1.
Nota: La deshabilitación de las comprobaciones permite a oci_pconnect() operar con la mayor eficiencia, aunque PHP podría no ser capaz de detectar conexiones inutilizables, como las causadas por la caída de la red, o si la base de datos de Oracle se ha venido abajo mientras PHP sigue conectado, hasta que la conexión se use después en el script. Consulte la documentación de oci_pconnect() para más información.
oci8.privileged_connect
boolean
Esta opción permite que las conexiones usen las credenciales privilegiadas
externas
OCI_SYSOPER
u OCI_SYSDBA
.
Nota: El establecerla a On puede permitir a los scripts de servidores web, ejecutados con los privilegios apropiados del SO, conectarse como usuarios privilegiados de la base de datos sin requerir una contraseña de la misma. Esto puede ser un riesgo para la seguridad.
oci8.statement_cache_size
int
Esta opción habilita el almacenamiento en caché de sentencias, y especifica cuántas almacenar. Para deshabilitar dicho almacenamiento se ha de establecer esta opción a 0.
El almacenamiento en caché de sentencias elimina la necesidad de transmitir el texto de las mismas a la base de datos y la necesidad de volver a transmitir cualquier metadato sobre dichas sententencias a PHP. Esto puede mejorar significativamente el rendimiento global del sistema en aplicaciones que reutilicen sentencias durante el tiempo de vida de una conexión. Algunos "cursores" extra de la base de datos podrían manetenerse abiertos bajo el supuesto de que las sentencias serán reutilizadas.
Establezca este valor al tamaño del conjunto de trabajo de sentencias usadas por la aplicación. Establcer un valor demasiado pequeño puede causar que se vacíen de la caché dichas sentencias antes de que sean reutilizadas.
Esta opción se usa mayormente con conexiones persistentes.
Al usar Oracle Database 12c, este valor puede ser sobrescrito y ajustado automáticamente por el fichero de del cliente oraaccess.xml de Oracle. Consulte la documentación de Oracle para más detalles.