Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Options de configuration OCI8
Nom Défaut Modifiable Historique
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 ObsolĂšte Ă  partir de PHP 8.1.0.
oci8.persistent_timeout "-1" INI_SYSTEM  
oci8.ping_interval "60" INI_SYSTEM  
oci8.prefetch_lob_size "0" INI_SYSTEM Disponible Ă  partir de PECL OCI8 3.2.
oci8.privileged_connect Off INI_SYSTEM  
oci8.statement_cache_size "20" INI_SYSTEM  

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 nombre 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() retournent à 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.

Lors de l'utilisation d'Oracle 12c ou ultĂ©rieur, la valeur de prĂ©-chargement dĂ©finie par PHP peut ĂȘtre surchargĂ©e par le fichier de configuration du client oracle : oraaccess.xml. Consulter la documentation d'Oracle pour plus d'informations.

Note: Si l'on entre une valeur trop importante, 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 bool

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 nƓud 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.

Lorsqu'on utilise 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 bool

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 on pense qu'il faut activer cette option, on est vivement encouragé à effacer les appels à la fonction oci_close() de l'application au lieu d'activer cette option.

oci8.persistent_timeout int

Le délai maximal (en secondes) qu'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 doit ĂȘtre activĂ© manuellement afin de lancer l'expiration de leurs propres ressources. L'introduction du pool de connexions persistantes (DRCP) en Oracle 11g rĂ©sout 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.

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. Consulter la documentation de la fonction oci_pconnect() pour plus d'informations.

oci8.prefetch_lob_size int

Il s'agit d'un paramÚtre de réglage affectant la mise en mémoire tampon interne des données LOB. L'augmentation de cette valeur peut améliorer les performances de récupération des petits LOB en réduisant les allers-retours entre PHP et la base de données. L'utilisation de la mémoire changera.

La valeur affecte les LOB renvoyés en tant qu'instances OCILob ainsi que ceux renvoyés à l'aide de OCI_RETURN_LOBS.

La valeur peut ĂȘtre dĂ©finie par instruction avec oci_set_prefetch_lob() avant l'exĂ©cution de l'instruction.

Note: À utiliser avec Oracle Database 12.2 ou ultĂ©rieur.

oci8.privileged_connect bool

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Ă©finir cette valeur Ă  la taille du jeu de requĂȘtes courantes utilisĂ©es par l'application. Le fait de dĂ©finir une valeur trop petite peut faire que les 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.

Avec la base de donnĂ©es Oracle 12c, cette valeur peut ĂȘtre surchargĂ©e et automatiquement ajustĂ©e par le fichier oraaccess.xml du client Oracle. Voir la documentation d'Oracle pour plus d'explications.

add a note

User Contributed Notes

There are no user contributed notes for this page.