Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
oci8.connection_class | "" | PHP_INI_ALL | Disponible depuis PHP 5.3 (PECL OCI8 1.3). |
oci8.default_prefetch | "100" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.events | Off | PHP_INI_SYSTEM | Disponible depuis PHP 5.3 (PECL OCI8 1.3). |
oci8.max_persistent | "-1" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.old_oci_close_semantics | Off | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.ping_interval | "60" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.privileged_connect | Off | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.2 (PECL OCI8 1.1). |
Voici un éclaircissement sur l'utilisation des directives de configuration.
oci8.connection_class
string
Le texte défini par l'utilisateur est utilisé par les connexions du pool de connexions résidantes de la base de données Oracle 11g pour partitionner le pool. Cela permet aux connexions persistantes OCI8 d'une application de réutiliser les sessions à la base de données depuis un script précédent, permettant ainsi une meilleure efficacité. Lorsqu'une application utilise un processus de base de données précédemment utilisé avec une classe de connexion différente, les configurations de la session, comme le format de la date par défaut d'Oracle, seront réinitialisées. Ce comportement permet d'éviter de partager accidentellement des informations entre les différentes applications.
La valeur peut être définie au moment de l'exécution grâce à la fonction ini_set(), appelée avant la connexion.
Pour utiliser DRCP, OCI8 doit être lié avec les bibliothèques Oracle 11g et la base de données doit être Oracle 11g. Le pool de connexion doit être activé dans la base de données, l'option de configuration oci8.connection_class doit valoir la même chaîne pour tous les serveurs web utilisant la même application, et la chaîne de connexion OCI8 doit spécifier d'utiliser un serveur utilisant un pool.
oci8.default_prefetch
int
Cette option définit le numbre par défaut de lignes supplémentaires qui seront récupérées et mises en cache automatiquement chaque fois qu'une requête de bas niveau récupérant des données depuis la base de données sera effectuée. Le fait de définir une valeur de 0 permet de désactiver cette fonctionnalité.
La valeur de pré-chargement n'altère pas le nombre de lignes que des fonctions comme oci_fetch_array() retourneront à l'utilisateur ; le pré-chargement et la mise en cache de lignes est géré en interne par OCI8.
La valeur peut être définie pour chaque requête, en exécutant la fonction oci_set_prefetch() avant l'exécution de la requête.
En PHP 5.3 (PECL OCI8 1.3.4), la valeur par défaut est passée de 10 à 100.
En PHP 5.3.2 (PECL OCI8 1.4), la valeur minimale autorisée a été réduite de 1 à 0, permettant ainsi la désactivation du pré-chargement.
Note: Si vous entrez une valeur trop important, cela peut conduire à une amélioration des performances, au détriment de l'utilisation mémoire. Pour des requêtes qui retournent un grand nombre de données, le gain de performance peut être vraiment significatif.
oci8.events
boolean
Définir à On cette option permet à PHP d'être notifié des événements de base de données FAN (Fast Application Notification).
Sans FAN, lorsqu'une instance de la base de données ou bien un noeud de machines échoue brutalement, les applications PHP peuvent se bloquer en attendant une réponse de la base de données, jusqu'au bout du délai d'expiration TCP. Avec les événements FAN, les applications PHP sont notifiées rapidement des erreurs qui affectent les connexions à la base de données. L'extension OCI8 nettoiera les connexions inutilisables dans le cache des connexions persistantes.
Lorsque vous utilisez On comme valeur, la base de données doit également être configurée pour émettre les événements FAN.
Le support de FAN est disponible lorsque OCI8 est lié à des bibliothèques Oracle 10gR2 (et suivants) et connecté à une base de données Oracle 10gR2 (et suivants).
oci8.max_persistent
int
Le nombre maximal de connexions persistantes OCI8 par processus PHP. Le fait de définir cette option à -1 signifie qu'il n'y a aucune limite.
oci8.old_oci_close_semantics
boolean
Cette option contrôle le comportement de la fonction oci_close(). Activer cette option signifie que oci_close() ne fera rien du tout ; la connexion ne sera pas fermée tant que la fin du script ne sera pas atteinte. Ceci est uniquement pour assurer une compatibilité ascendante. Si vous pensez que vous devez activer cette option, vous êtes vivement encouragé à effacer les appels à la fonction oci_close() de votre application au lieu d'activer cette option.
oci8.persistent_timeout
int
Le délai maximal (en secondes) q'un processus PHP donné est autorisé à maintenir une connexion persistante. Le fait de définir cette option à -1 signifie que les connexions persistantes seront toujours maintenues tant que le processus PHP ne se termine ou bien que la connexion est explicitement fermée à l'aide de la fonction oci_close().
Note: En PHP, l'expiration des ressources persistantes ne produit aucune alerte. Elle survient lorsque PHP termine un script et vérifie le timestamp de la dernière utilisation de la ressource. Aussi, le paradoxe veut que les connexions persistantes ne peuvent être closes que lors d'une quelconque activité (non nécessaire en OCI8) dans le processus PHP. S'il y a plus d'un processus PHP, alors chacun d'eux doivent être activés manuellement afin de lancer l'expiration de leurs propres ressources. L'introduction du pool de connexions persistantes (DRCP) en Oracle 11g résolve les problèmes de mémoire et de ressources, que les options oci8.max_persistent et oci8.persistent_timeout ont tenté précédemment de résoudre.
Note: En PHP 5.3 (PECL OCI8 1.3), les connexions persistantes peuvent être fermées avec la fonction oci_close().
oci8.ping_interval
int
Le délai maximal (en secondes) à attendre avant d'envoyer un ping durant oci_pconnect(). Lorsque définie à 0, les connexions persistantes seront vérifiées à chaque réutilisation. Pour désactiver complètement les ping, définissez cette option à -1.
Note: Le fait de désactiver les pings rend les appels à oci_pconnect() hautement rentables, mais cela empêche PHP de détecter les problèmes de connexion, comme les problèmes de réseau, ou si le serveur Oracle a été éteint depuis la connexion de PHP, tant que la connexion n'est pas utilisée plus tard dans le script. Consultez la documentation de la fonction oci_pconnect() pour plus d'informations.
oci8.privileged_connect
boolean
Cette option active les connexions privilégiées en utilisant les droits externes
(OCI_SYSOPER
, OCI_SYSDBA
).
Note: Le fait de définir cette valeur à On permet aux scripts du serveur web exécutant les privilèges utilisateurs systèmes appropriés de se connecter à la base de données en utilisant ces privilèges, sans avoir besoin de fournir un mot de passe à la base de données. Ceci peut avoir des conséquences au niveau de la sécurité.
oci8.statement_cache_size
int
Cette option active la mise en cache des requêtes, et spécifie le nombre de requêtes à mettre en cache. Pour désactiver la mise en cache des requêtes, définissez cette option à 0.
La mise en cache des requêtes permet de ne plus avoir besoin de transmettre le texte de la requête à la base de données, mais aussi, de ne plus avoir besoin de transmettre de méta-données sur la requête à PHP. Ceci permet d'accroître significativement les performances systèmes dans les applications, en ré-utilisant les requêtes durant toute la vie de la connexion. Des "curseurs" de base de données peuvent également aider si l'on part du principe que des requêtes seront ré-utilisées.
Définissez cette valeur à la taille de votre jeux de requêtes courantes utilisées par votre application. Le fait de définir une valeur trop petite peut faire que vos requêtes seront supprimées du cache avant qu'elles ne soient utilisées.
Cette option est la plus utilisée avec les connexions persistantes.