<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/oci8.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'oci8.configuration.php',
    1 => 'Configuration &agrave; l\'ex&eacute;cution',
    2 => 'Configuration &agrave; l\'ex&eacute;cution',
  ),
  'up' => 
  array (
    0 => 'oci8.setup.php',
    1 => 'Installation/Configuration',
  ),
  'prev' => 
  array (
    0 => 'oci8.test.php',
    1 => 'Test',
  ),
  'next' => 
  array (
    0 => 'oci8.constants.php',
    1 => 'Constantes pr&eacute;-d&eacute;finies',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/oci8/ini.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="oci8.configuration" class="section">
 <h2 class="title">Configuration à l&#039;exécution</h2>
 <p class="simpara">Le comportement de ces fonctions est
affecté par la configuration dans le fichier <var class="filename">php.ini</var>.</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Options de configuration OCI8</strong></caption>
   
    <thead>
     <tr>
      <th>Nom</th>
      <th>Défaut</th>
      <th>Modifiable</th>
      <th>Historique</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.connection-class" class="link">oci8.connection_class</a></td>
      <td>&quot;&quot;</td>
      <td><strong><code>INI_ALL</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.default-prefetch" class="link">oci8.default_prefetch</a></td>
      <td>&quot;100&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.events" class="link">oci8.events</a></td>
      <td>Off</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.max-persistent" class="link">oci8.max_persistent</a></td>
      <td>&quot;-1&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.old-oci-close-semantics" class="link">oci8.old_oci_close_semantics</a></td>
      <td>Off</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td>Obsolète à partir de PHP 8.1.0.</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.persistent-timeout" class="link">oci8.persistent_timeout</a></td>
      <td>&quot;-1&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.ping-interval" class="link">oci8.ping_interval</a></td>
      <td>&quot;60&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.prefetch-lob-size" class="link">oci8.prefetch_lob_size</a></td>
      <td>&quot;0&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td>Disponible à partir de PECL OCI8 3.2.</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.privileged-connect" class="link">oci8.privileged_connect</a></td>
      <td>Off</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.statement-cache-size" class="link">oci8.statement_cache_size</a></td>
      <td>&quot;20&quot;</td>
      <td><strong><code>INI_SYSTEM</code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

    </tbody>
   
  </table>

 </p>
 
 <p class="para">Voici un éclaircissement sur
l&#039;utilisation des directives de configuration.</p>
 
 <p class="para">
  <dl>
   
    <dt id="ini.oci8.connection-class">
     <code class="parameter">oci8.connection_class</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="para">
      Le texte défini par l&#039;utilisateur est utilisé par les connexions du
      pool de connexions résidantes de la base de données Oracle 11<em>g</em>
      pour partitionner le pool. Cela permet aux connexions persistantes
      OCI8 d&#039;une application de réutiliser les sessions à la base de données
      depuis un script précédent, permettant ainsi une meilleure efficacité.
      Lorsqu&#039;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&#039;Oracle,
      seront réinitialisées. Ce comportement permet d&#039;éviter de partager
      accidentellement des informations entre les différentes applications.
     </p>
     <p class="para">
      La valeur peut être définie au moment de l&#039;exécution grâce à la fonction
      <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span>, appelée avant la connexion.
     </p>
     <p class="para">
      Pour utiliser DRCP, OCI8 doit être lié avec les bibliothèques Oracle 11<em>g</em>
      et la base de données doit être Oracle 11<em>g</em>. Le pool de connexion doit 
      être activé dans la base de données, l&#039;option de configuration
      <code class="literal">oci8.connection_class</code> 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&#039;utiliser un serveur utilisant un pool.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.default-prefetch">
     <code class="parameter">oci8.default_prefetch</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      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&#039;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
      <code class="literal">0</code> permet de désactiver cette fonctionnalité.
     </p>
     <p class="para">
      La valeur de pré-chargement n&#039;altère pas le nombre de lignes que des
      fonctions comme <span class="function"><a href="function.oci-fetch-array.php" class="function">oci_fetch_array()</a></span> retournent à
      l&#039;utilisateur ; le pré-chargement et la mise en cache de lignes
      est géré en interne par OCI8.
     </p>
     <p class="para">
      La valeur peut être définie pour chaque requête, en exécutant la fonction
      <span class="function"><a href="function.oci-set-prefetch.php" class="function">oci_set_prefetch()</a></span> avant l&#039;exécution de la requête.
     </p>
     <p class="para">
      Lors de l&#039;utilisation d&#039;Oracle 12<em>c</em> ou ultérieur, la valeur de
      pré-chargement définie par PHP peut être surchargée par le fichier de
      configuration du client oracle : <code class="literal">oraaccess.xml</code>. 
      Consulter la documentation d&#039;Oracle pour plus d&#039;informations.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       Si l&#039;on entre une valeur trop importante, cela peut conduire à
       une amélioration des performances, au détriment
       de l&#039;utilisation mémoire. Pour des requêtes qui retournent un
       grand nombre de données, le gain de performance peut être vraiment
       significatif.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.events">
     <code class="parameter">oci8.events</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Définir à <code class="literal">On</code> cette option permet à PHP d&#039;être
      notifié des événements de base de données FAN (<code class="literal">Fast Application
      Notification</code>).
     </p>
     <p class="para">
      Sans FAN, lorsqu&#039;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&#039;au bout du délai
      d&#039;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&#039;extension OCI8 nettoiera les connexions inutilisables
      dans le cache des connexions persistantes.
     </p>
     <p class="para">
      Lorsqu&#039;on utilise <code class="literal">On</code> comme valeur, la base de données
      doit également être configurée pour émettre les événements FAN.
     </p>
     <p class="para">
      Le support de FAN est disponible lorsque OCI8 est lié à des bibliothèques
      Oracle 10<em>g</em>R2 (et suivants) et connecté à une base de données Oracle
      10<em>g</em>R2 (et suivants).
     </p>
    </dd>
   
   
    <dt id="ini.oci8.max-persistent">
     <code class="parameter">oci8.max_persistent</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Le nombre maximal de connexions persistantes OCI8 par processus PHP.
      Le fait de définir cette option à -1 signifie qu&#039;il n&#039;y a aucune limite.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.old-oci-close-semantics">
     <code class="parameter">oci8.old_oci_close_semantics</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Cette option contrôle le comportement de la fonction <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span>.
      Activer cette option signifie que <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span> 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&#039;il faut activer
      cette option, on est <em>vivement encouragé</em> à
      effacer les appels à la fonction <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span> de l&#039;application
      au lieu d&#039;activer cette option.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.persistent-timeout">
     <code class="parameter">oci8.persistent_timeout</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Le délai maximal (en secondes) qu&#039;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&#039;aide de la fonction <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span>.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       En PHP, l&#039;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&#039;une quelconque activité (non nécessaire
       en OCI8) dans le processus PHP. S&#039;il y a plus d&#039;un processus
       PHP, alors chacun d&#039;eux doit être activé manuellement
       afin de lancer l&#039;expiration de leurs propres ressources.
       L&#039;introduction du pool de connexions persistantes (DRCP) en
       Oracle 11<em>g</em> résout les problèmes de mémoire et de ressources, que
       les options <code class="literal">oci8.max_persistent</code> et
       <code class="literal">oci8.persistent_timeout</code> ont tenté précédemment
       de résoudre.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.ping-interval">
     <code class="parameter">oci8.ping_interval</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Le délai maximal (en secondes) à attendre avant d&#039;envoyer un ping durant
      <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>. 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.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       Le fait de désactiver les pings rend les appels à <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>
       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&#039;est pas utilisée plus tard dans le script.
       Consulter la documentation de la fonction
       <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span> pour plus d&#039;informations.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.prefetch-lob-size">
     <code class="parameter">oci8.prefetch_lob_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Il s&#039;agit d&#039;un paramètre de réglage affectant la mise en mémoire tampon interne des données LOB.
      L&#039;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&#039;utilisation de la mémoire changera.
     </p>
     <p class="para">
      La valeur affecte les LOB renvoyés en tant qu&#039;instances OCILob ainsi que ceux renvoyés
      à l&#039;aide de <strong><code><a href="oci8.constants.php#constant.oci-return-lobs">OCI_RETURN_LOBS</a></code></strong>.
     </p>
     <p class="para">
      La valeur peut être définie par instruction
      avec <span class="function"><a href="function.oci-set-prefetch-lob.php" class="function">oci_set_prefetch_lob()</a></span> avant l&#039;exécution de l&#039;instruction.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       À utiliser avec Oracle Database 12.2 ou ultérieur.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.privileged-connect">
     <code class="parameter">oci8.privileged_connect</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Cette option active les connexions privilégiées en utilisant les droits externes
      (<strong><code><a href="oci8.constants.php#constant.oci-sysoper">OCI_SYSOPER</a></code></strong>, <strong><code><a href="oci8.constants.php#constant.oci-sysdba">OCI_SYSDBA</a></code></strong>).
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       Le fait de définir cette valeur à <code class="literal">On</code>
       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é.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.statement-cache-size">
     <code class="parameter">oci8.statement_cache_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      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.
     </p>
     <p class="para">
      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&#039;accroître significativement les performances systèmes
      dans les applications, en ré-utilisant les requêtes durant toute
      la vie de la connexion. Des &quot;curseurs&quot; de base de données
      peuvent également aider si l&#039;on part du principe que des requêtes seront
      ré-utilisées.
     </p>
     <p class="para">
      Définir cette valeur à la taille du jeu de requêtes courantes
      utilisées par l&#039;application. Le fait de définir une valeur trop petite
      peut faire que les requêtes seront supprimées du cache avant qu&#039;elles ne
      soient utilisées.
     </p>
     <p class="para">
      Cette option est la plus utilisée avec les connexions persistantes.
     </p>
     <p class="para">
      Avec la base de données Oracle 12<em>c</em>, cette valeur 
      peut être surchargée et automatiquement ajustée par le fichier 
      <code class="literal">oraaccess.xml</code> du client Oracle. Voir la documentation 
      d&#039;Oracle pour plus d&#039;explications.
     </p>
    </dd>
   
  </dl>
 </p>
</div><?php manual_footer($setup); ?>