|
Sommaire
Apache |
6.43 Informix
Les pilotes d'accès à Informix pour Online (ODS) 7.x, SE 7.x,
Universal Server (IUS) 9.x et IDS 2000 sont implémentés dans
"functions/ifx.ec" et "functions/php3_ifx.h". Le support ODS 7.x est
plutôt complet, et accepte les colonnes de type BYTE et TEXT.
Le support IUS 9.x est partiellement fini, de nouveaux types sont disponibles,
mais SLOB et CLOB sont toujours en cours de développement.
Vous avez besoin d'une version de ESQL/C pour compiler le pilote PHP d'Informix.
Les versions ESQL/C 7.2x sont utilisables. ESQL/C fait partie du SDK
Informix Client.
Avant que vous ne lanciez le script "configure", assurez-vous que la variable
d'environnement "INFORMIXDIR" a été correctement
paramétrée, et que $INFORMIXDIR/bin est dans votre PATH.
Le script de configuration va détecter automatiquement les librairies
disponibles, et inclure les dossiers si vous lancer le script avec l'option
--with-informix=yes.
Vous pouvez ignorer cette détection
en spécifiant "IFX_LIBDIR", "IFX_LIBS" et "IFX_INCDIR" dans votre
environnement. Le script de
configuration va aussi essayer de détecter la version de votre serveur Informix.
Il modifiera alors la condition de compilation "HAVE_IFX_IUS" si votre serveur
Informix est d'une version plus récente que 9.00.
Assurez-vous que les variables d'environnement INFORMIXDIR et
INFORMIXSERVER sont accessibles au pilote PHP, et que le dossier bin
INFORMIX est aussi dans la variable PATH. Vous pouvez le voir en lançant un
script qui contient un appel à phpinfo avant
que vous ne commenciez à tester. La fonction
phpinfo affiche une liste des variables
d'environnement. Cela fonctionne aussi bien en mode
mod_php, qu'en mode CGI. Il vous faudra fixer les valeurs dans le script
de démarrage d'Apache.
Les "Informix shared libraries" doivent aussi être accessibles au
chargement (vérifiez LD_LINBRARY_PATH ou ld.so.conf/ldconfig).
Les objets de type BLOBs sont normalement gérés par des
identifiants de BLOB. Les requêtes de sélection retournent
un identifiant de BLOB pour chaque colonne de type BYTE et TEXT. Vous
pouvez en lire le contenu, avec des commandes de types
"string_var = ifx_get_blob($BLOB_id);" ; si vous souhaitez ramener le BLOB en
mémoire (avec:@: "ifx_blobinfile_mode(0);"). Si vous préférez
recevoir le contenu d'une colonne BLOB dans un fichier, utilisez
ifx_blobinfile_mode, et ifx_get_blob($BLOB_id)
vous retournera le nom du fichier. Utilisez les fonctions habituelles
d'accès aux fichiers pour lire son contenu.
Pour les requêtes INSERT/UPDATE, vous devez créer les identifiants
de BLOB par vous même, avec la fonction ifx_create_blob.
Puis, vous placez l'identifiant de BLOB dans un tableau, et remplacez
la colonne par un point d'interrogation. Pour les UPDATE/INSERT, vous
êtes responsable du contenu du BLOB, avec la fonction
ifx_update_blob.
Le comportement par défaut des colonnes de type BLOB peut être
modifié en affectant de nouvelles valeurs aux variables de configuration
(même à la volée) :@:
Variable de configuration :@: ifx.textasvarchar
Variable de configuration :@: ifx.byteasvarchar
Fonctions à utiliser lors de l'exécution :@:
ifx_textasvarchar(0) :@: Utilise l'identifiant de BLOB avec des colonnes de type
TEXT, dans les requêtes SELECT
ifx_byteasvarchar(0) :@: Utilise l'identifiant de BLOB avec des colonnes de type
BYTE, dans les requêtes SELECT
ifx_textasvarchar(1) :@: Retourne les colonnes de type TEXT sous la forme de
VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.
ifx_byteasvarchar(1) :@: Retourne les colonnes de type BYTE sous la forme de
VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.
Variable de configuration :@: ifx.BLOBinfile
Fonctions à utiliser lors de l'exécution :@:
ifx_blobinfile_mode(0) :@: Retourne les colonnes de type BYTE en mémoire,
l'identifiant de BLOB vous donnera accès au contenu.
ifx_blobinfile_mode(1) :@: Retourne les colonnes de type BYTE dans un fichier,
l'identifiant de BLOB vous donnera accès au nom de ce fichier.
En affectant la valeur de 1 à ifx_text/byteasvarchar, vous pouvez
utiliser les colonnes de type TEXT et BYTE dans les requêtes SELECT
comme des champs VARCHAR (mais plus long). Etant donné la gestion
des chaînes par PHP, cette technique conserve les données
binaires. Les données retournées peuvent contenir n'importe
quoi, et vous êtes responsable de la bonne manipulation de ces valeurs.
En affectant la valeur de 1 à ifx_blobinfile_mode,
utilisez le nom de fichier retourné par ifx_get_blob
pour accéder au contenu du BLOB. Notez bien que vous êtes tenu
responsable de l'effacement des fichiers temporaires, créés par
Informix. Chaque nouvelle ligne lue sur le serveur va créer un nouveau
fichier temporaire, pour chaque colonne de type BYTE.
L'emplacement des fichiers temporaire peut être modifié, grâce
à la variable "blobdir", (par défaut, ".", c'est-à-dire,
le dossier courant). Une valeur telle que BLOBdir="tmpBLOB" simplifiera le
nettoyage des fichiers temporaires, accidentellement oubliés (les noms
commencent tous par "blb").
Elle peut être mise en place avec la variable de configuration.
ifx.charasvarchar :@: avec la valeur 1, les espaces de fin de champs seront
automatiquement supprimés.
Lorsque la variable de configuration ifx.nullformat (ou que la fonction
ifx_nullformat) est à un, les colonnes contenant
la valeur NULL retourneront la chaîne "NULL", et sinon, retourneront
une chaîne vide. Cela vous permet de faire la différence entre
les colonnes vides et celles qui contiennent la valeur NULL.
|