PHP Unconference Europe 2015

Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Nota:

Asegúrese de que las variables de entorno INFORMIXDIR e INFORMIXSERVER estén disponibles para el driver ifx de PHP, y que el directorio bin de INFORMIX esté en el PATH. Revise esto ejecutando un script que contenga una llamada a phpinfo() antes de comenzar a probar. La salida de phpinfo() debería listar estas variables de entorno. Esto es verdadero para ambos CGI php y Apache mod_php. Es posible que se deban fijar estas variables de entorno en el script de arranque de Apache.

Las librerías compartidas de Informix también deben de estar disponibles para el cargador (revise LD_LIBRARY_PATH o ld.so.conf/ldconfig).

Nota: Algunas notas en el uso de BLOBs (columnas TEXT y BYTE)

Los BLOBs son referenciados por identificadores BLOB. Peticiones Select regresan un "blob id" por cada columna BYTE y TEXT. Se puede llegar al contenido con "string_var = ifx_get_blob($blob_id);" si se elige colocar los BLOBs en memoria (con: "ifx_blobinfile(0);"). Si se prefiere recibir el contenido de las columnas BLOB en un fichero, utilice "ifx_blobinfile(1);", y "ifx_get_blob($blob_id);" devolverá el nombre del fichero. Utilice E/S de ficheros para acceder al contenido del blob.

Para peticiones de insert/update se deben crear estos "blob id" por cuenta propia con "ifx_create_blob();". Entonces se insertan los blob id dentro de una matriz, y se remplazan las columnas blob con un signo de interrogación (?) en la cadena de petición. Para updates/inserts, se tiene la responsabilidad de fijar el contenido del blob con ifx_update_blob().

El comportamiento de las columnas BLOB puede ser alterado por variables de configuración que también pueden ser fijadas en tiempo de ejecución:

variable de configuración: ifx.textasvarchar

variable de configuración: ifx.byteasvarchar

funciones de tiempo de ejecución:

ifx_textasvarchar(0): utilice blob ids para peticiones select con columnas TEXT

ifx_byteasvarchar(0): utilice blob ids para peticiones select con columnas BYTE

ifx_textasvarchar(1): devolver columnas TEXT como si fueran columnas VARCHAR, de tal manera que no sea necesario utilizar blob ids para peticiones select.

ifx_byteasvarchar(1): devolver columnas BYTE como si fueran columnas VARCHAR, de tal manera que no sea necesario utilizar blob ids para peticiones select.

variable de configuración: ifx.blobinfile

función de tiempo de ejecución:

ifx_blobinfile_mode(0): devolver columnas BYTE en memoria, el blob id permite acceder al contenido.

ifx_blobinfile_mode(1): devolver columnas BYTE en un fichero, el blob id permite obtener el nombre del fichero.

Si se fija ifx_text/byteasvarchar a 1, se pueden utilizar columnas TEXT y BYTE en peticiones select tal como en campos VARCHAR normales (aunque largos). Dado que todas las cadenas en PHP son "contadas", esto sigue siendo "seguro al tratar con datos binarios". Es su responsabilidad manejar esto correctamente. Los datos devueltos pueden no contener nada, Usted es responsable del contenido.

Si se fija ifx_blobinfile a 1, utilice el nombre de fichero devuelto por ifx_get_blob(..) para acceder al contenido del blob. Note que en este caso USTED ES EL RESPONSABLE DE BORRAR LOS FICHEROS TEMPORALES CREADOS POR INFORMIX al obtener el registro. Cada nuevo registro obtenido creará nuevos ficheros temporales para cada columna BYTE.

La ubicación de los ficheros temporales puede ser influenciada por la variable de entorno "blobdir", por defecto es "." (el directorio actual). Algo así como: "putenv(blobdir=tmpblob"); facilitará la limpieza de ficheros temporales dejados atrás accidentalmente (todos sus nombres inician con "blb").

Nota: Recortado (trimming) automático de datos tipo "char" (SQLCHAR y SQLNCHAR)

Esto puede ser fijado con la variable de configuración

ifx.charasvarchar: si se fija en 1 los espacios finales serán automáticamente eliminados, para ahorrar un poco de "rebanado".

Nota: Valores NULL

La variable de configuración ifx.nullformat (y la función de tiempo de ejecución ifx_nullformat()) cuando es fijada a TRUE devolverá las columnas NULL como la cadena "NULL", cuando es fijada a FALSE devuelven la cadena vacía. Esto permite discriminar entre columnas NULL y columnas vacías.

Opciones de configuración de Informix
Nombre Por defecto Cambiable Historial de cambios
ifx.allow_persistent "1" PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.max_persistent "-1" PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.max_links "-1" PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.default_host NULL PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.default_user NULL PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.default_password NULL PHP_INI_SYSTEM Eliminada en PHP 5.2.1.
ifx.blobinfile "1" PHP_INI_ALL Eliminada en PHP 5.2.1.
ifx.textasvarchar "0" PHP_INI_ALL Eliminada en PHP 5.2.1.
ifx.byteasvarchar "0" PHP_INI_ALL Eliminada en PHP 5.2.1.
ifx.charasvarchar "0" PHP_INI_ALL Eliminada en PHP 5.2.1.
ifx.nullformat "0" PHP_INI_ALL Eliminada en PHP 5.2.1.
Para más detalles y definiciones de los modos de PHP_INI_*, vea Dónde se puede realizar un ajuste de configuración.

He aquí una breve explicación de las directivas de configuración.

ifx.allow_persistent boolean

Permitir o no conexiones persistentes a Informix.

ifx.max_persistent integer

El número máximo de conexiones persistentes a Informix por proceso.

El número máximo de conexiones a Informix por proceso, incluyendo conexiones persistentes.

ifx.default_host string

El host por defecto al cual conectarse cuando no se ha especificado un host en ifx_connect() o ifx_pconnect(). No es efectiva en modo seguro.

ifx.default_user string

El user id por defecto a utilizarse cuando no se especifica ninguno en ifx_connect() o ifx_pconnect(). No es efectiva en modo seguro.

ifx.default_password string

La contraseña por omisión a utilizarse cuando no se ha especificado ninguna en ifx_connect() o ifx_pconnect(). No es efectiva en modo seguro.

ifx.blobinfile boolean

Fíjese a TRUE si se desea devolver las columnas blob en un fichero, FALSE si se les desea en memoria. Se puede invalidar la opción en tiempo de ejecución con ifx_blobinfile_mode().

ifx.textasvarchar boolean

Fíjese a TRUE si se desea devolver las columnas TEXT como cadenas normales en enunciados select, FALSE si se desea utilizar parámetros blob id. Se puede invalidar la opción en tiempo de ejecución con ifx_textasvarchar().

ifx.byteasvarchar boolean

Fíjese a TRUE si se desea devolver las columnas BYTE como cadenas normales en peticiones select, FALSE si se desea utilizar parámetros blob id. Se puede invalidar la opción en tiempo de ejecución con ifx_textasvarchar().

ifx.charasvarchar boolean

Fíjese a TRUE si se desea eliminar los espacios sobrantes de las columnas CHAR al traerlas.

ifx.nullformat boolean

Fíjese a TRUE si se desea devolver columnas NULL como la cadena literal "NULL", FALSE si se desea que sean devueltas como la cadena vacía "". Se puede invalidar esta opción en tiempo de ejecución con ifx_nullformat().

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top