<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.mysqlnd.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.config.php',
    1 => 'Configuration &agrave; l\'ex&eacute;cution',
    2 => 'Configuration &agrave; l\'ex&eacute;cution',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.install.php',
    1 => 'Installation',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.incompatibilities.php',
    1 => 'Incompatibilit&eacute;s',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/mysqlnd/config.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.config" class="chapter">

 <h1 class="title">Configuration à l&#039;exécution</h1>

 <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 id="mysqlnd.config.options" class="doctable table">
   <caption><strong>Options de configuration de MySQL Native Driver</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="mysqlnd.config.php#ini.mysqlnd.collect-statistics" class="link">mysqlnd.collect_statistics</a></td>
       <td>&quot;1&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.collect-memory-statistics" class="link">mysqlnd.collect_memory_statistics</a></td>
       <td>&quot;0&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.debug" class="link">mysqlnd.debug</a></td>
       <td>&quot;&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.log-mask" class="link">mysqlnd.log_mask</a></td>
       <td>0</td>
       <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.mempool-default-size" class="link">mysqlnd.mempool_default_size</a></td>
       <td>16000</td>
       <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
      <td><a href="mysqlnd.config.php#ini.mysqlnd.net-read-timeout" class="link">mysqlnd.net_read_timeout</a></td>
      <td>&quot;86400&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td>
       Avant PHP 7.2.0 la valeur par défaut était &quot;31536000&quot;
       et la variabilité était <strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong>
      </td>
     </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.net-cmd-buffer-size" class="link">mysqlnd.net_cmd_buffer_size</a></td>
       <td>&quot;4096&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.net-read-buffer-size" class="link">mysqlnd.net_read_buffer_size</a></td>
       <td>&quot;32768&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.sha256-server-public-key" class="link">mysqlnd.sha256_server_public_key</a></td>
       <td>&quot;&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-perdir">INI_PERDIR</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><a href="mysqlnd.config.php#ini.mysqlnd.trace-alloc" class="link">mysqlnd.trace_alloc</a></td>
       <td>&quot;&quot;</td>
       <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
      <td><a href="mysqlnd.config.php#ini.mysqlnd.fetch_data_copy" class="link">mysqlnd.fetch_data_copy</a></td>
      <td>0</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td>Supprimé à partir de PHP 8.1.0</td>
     </tr>

     </tbody>
    
   </table>

   Pour plus de détails sur les modes INI_*,
        se reporter à <a href="configuration.changes.modes.php" class="xref">O&ugrave; une directive de configuration peut &ecirc;tre modifi&eacute;e</a>.
 </p>

 <p class="simpara">Voici un éclaircissement sur
l&#039;utilisation des directives de configuration.</p>

 <dl>
  
   <dt id="ini.mysqlnd.collect-statistics">
    <code class="parameter">mysqlnd.collect_statistics</code>
    <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
   </dt>
   <dd>
    <p class="simpara">
     Active la collecte de différentes statistiques du client auxquelles l&#039;on
     peut accéder via <span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span>,
     <span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span>,
     et qui sont aussi décrites
     dans la section <code class="literal">mysqlnd</code> de la sortie de la fonction
     <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
    </p>
    <p class="simpara">
     Ce paramètre active toutes
     <a href="mysqlnd.stats.php" class="link"> les statistiques de MySQL Native Driver
     </a> sauf celles relatives à la gestion de la mémoire.
    </p>
   </dd>
   
   
    <dt id="ini.mysqlnd.collect-memory-statistics">
     <code class="parameter">mysqlnd.collect_memory_statistics</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Active la collecte de différentes statistiques concernant la mémoire
      qui peuvent être consultées via
      <span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span>,
      <span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span>,
      et qui sont aussi montrées dans
      la section <code class="literal">mysqlnd</code> de la sortie de la fonction
      <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
     </p>
     <p class="simpara">
      Ce paramètre active les statistiques de gestion de la mémoire parmi
      <a href="mysqlnd.stats.php" class="link">les statistiques fournies par MySQL
       Native Driver</a>.
     </p>
    </dd>
   
   
    <dt id="ini.mysqlnd.debug">
     <code class="parameter">mysqlnd.debug</code> <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Journalise les communications en provenance de toute extension utilisant
      <code class="literal">mysqlnd</code>.
     </p>
     <p class="simpara">
      Le format de cette directive est <code class="literal">mysqlnd.debug =
      &quot;option1[,parameter_option1][:option2[,parameter_option2]]&quot;</code>.
     </p>
     <p class="simpara">
      Les options de formatage des chaînes sont les suivantes:
     </p>
     <ul class="itemizedlist">
      <li class="listitem">
       <p class="simpara">
        A[,file] - Ajoute la trace à un fichier. S&#039;assure que les données sont écrites
        après chaque écriture en fermant puis rouvrant le fichier de trace (lent). Ceci
        aide à s&#039;assurer que le fichier de traces sera complet même si l&#039;application crash.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        a[,file] - Ajoute la trace à un fichier.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        d - Active la sortie depuis les macros DBUG_&lt;N&gt; pour l&#039;état actuel.
        Peut être suivi d&#039;une liste de mots-clés qui sélectionnent la sortie seulement
        pour les macros DBUG avec ce mot-clé (filtre). Une liste vide de mot-clé
        sélectionnera tout.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        f[,functions] - Limite les actions du débogueur à une liste spécifique de fonctions.
        Une liste vide fera en sorte que toutes les fonctions seront utilisées.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        F - Marque chaque ligne de débogage du nom du fichier source contenant la macro
        causant cette sortie.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        i - Marque chaque ligne de débogage du PID.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        L - Marque chaque ligne de débogage du nom du fichier source ainsi que de la ligne
        de la macro qui cause cette sortie.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        n - Marque chaque ligne de débogage de la profondeur actuelle de la fonction.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        o[,file] - Similaire à a[,file] mais écrase les fichiers plutôt que de les
        compléter.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        O[,file] - Similaire à A[,file] mais écrase les fichiers plutôt que de les
        compléter.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        t[,N] - Active le traçage du flux de contrôle des fonctions. La profondeur maximale
        est précisée par N, par défaut 200.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        x - Active le profilage.
       </p>
      </li>
      <li class="listitem">
       <p class="simpara">
        m - Trace les allocations et désallocations de mémoire.
       </p>
      </li>
     </ul>
     <p class="simpara">
      Exemple:
     </p>
     <div class="example-contents">
<div class="cdata"><pre>
d:t:x:O,/tmp/mysqlnd.trace
</pre></div>
    </div>

    <blockquote class="note"><p><strong class="note">Note</strong>: 
     <p class="simpara">
      Cette caractéristique n&#039;est disponible que pour les versions debug de PHP.
     </p>
    </p></blockquote>
    <p class="simpara"/>
   </dd>
   
   
    <dt id="ini.mysqlnd.log-mask">
     <code class="parameter">mysqlnd.log_mask</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Définit quelle requête sera historisée. Par défaut, vaut 0, ce qui signifie
      que les logs sont désactivés. Il convient de définir cette option en utilisant
      un entier, et non une constante PHP. Par exemple, une valeur de
      48 (16 + 32) va historiser les requêtes lentes qui utilisent soit &#039;no good index&#039;
      (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) soit aucun index du tout (SERVER_QUERY_NO_INDEX_USED = 32).
      Une valeur de 2043 (1 + 2 + 8 + ... + 1024) historisera tout type de requêtes lentes.
     </p>
     <p class="simpara">
      Les types sont les suivants : SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
      SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
      SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
      SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, et SERVER_QUERY_WAS_SLOW=1024.
     </p>
    </dd>
   
   
    <dt id="ini.mysqlnd.mempool-default-size">
     <code class="parameter">mysqlnd.mempool_default_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Taille par défaut de la file d&#039;attente mémoire mysqlnd, utilisée par les jeux
      de résultats.
     </p>
    </dd>
   
   
    <dt id="ini.mysqlnd.net-read-timeout">
     <code class="parameter">mysqlnd.net_read_timeout</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      <code class="literal">mysqlnd</code> et la MySQL Client Library,
      <code class="literal">libmysqlclient</code> utilisent des API réseau différentes.
      <code class="literal">mysqlnd</code> utilise les flux PHP, alors que
      <code class="literal">libmysqlclient</code> utilise sa propre implémentation basée sur
      le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
      en utilisant le paramètre de <var class="filename">php.ini</var>,
      <code class="literal">default_socket_timeout</code>. Ceci s&#039;applique à tous les flux
      qui ne précisent pas de timeout par défaut.
      <code class="literal">mysqlnd</code> n&#039;affecte aucune autre valeur et donc des requêtes
      longues peuvent se voir déconnectées après
      <code class="literal">default_socket_timeout</code> secondes avec comme résultat
      un message d&#039;erreur <q class="quote">2006 - MySQL Server has gone
      away</q>. La MySQL Client Library affecte un timeout par défaut de
      24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de
      TCP/IP. <code class="literal">mysqlnd</code> utilise maintenant le même timeout très long.
      La valeur est configurable via le paramètre <var class="filename">php.ini</var>
      <code class="literal">mysqlnd.net_read_timeout</code>.
      <code class="literal">mysqlnd.net_read_timeout</code> est donc utilisé par toute extension
      (<code class="literal">ext/mysql</code>, <code class="literal">ext/mysqli</code>,
      <code class="literal">PDO_MySQL</code>) qui se repose sur
      <code class="literal">mysqlnd</code>. <code class="literal">mysqlnd</code> indique aux flux PHP d&#039;utiliser
      <code class="literal">mysqlnd.net_read_timeout</code>. À noter : qu&#039;il peut y avoir des différences
      subtiles entre
      <code class="literal">MYSQL_OPT_READ_TIMEOUT</code> de la MySQL Client Library et les flux
      PHP, par exemple <code class="literal">MYSQL_OPT_READ_TIMEOUT</code> est dite fonctionnelle
      uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
      Les flux PHP, eux, n&#039;ont pas cette limite. Voir la documentation des flux en cas
      de doute.
     </p>
    </dd>
   
   
    <dt id="ini.mysqlnd.net-cmd-buffer-size">
     <code class="parameter">mysqlnd.net_cmd_buffer_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      <code class="literal">mysqlnd</code> alloue un buffer interne pour le réseau d&#039;une taille
      de <code class="literal">mysqlnd.net_cmd_buffer_size</code> (dans
      <var class="filename">php.ini</var>) octets pour chaque connexion. Si une commande du
      protocole MySQL Client Server, par exemple,
      <code class="literal">COM_QUERY</code> (requête <q class="quote">normale</q>), ne rentre pas dans
      le buffer, <code class="literal">mysqlnd</code> va agrandir celui-ci à la taille requise.
      A chaque fois que le buffer est agrandi pour une connexion,
      <code class="literal">command_buffer_too_small</code> va être incrémenté d&#039;un.
     </p>
     <p class="simpara">
      Si <code class="literal">mysqlnd</code> doit agrandir le buffer au-delà de sa taille initiale de
      <code class="literal">mysqlnd.net_cmd_buffer_size</code> octets pour presque toutes les connexions,
      il est recommandé d&#039;alors augmenter cette taille par défaut afin d&#039;éviter les ré-allocations.
     </p>
     <p class="simpara">
      La taille par défaut du buffer est de 4096 octets.
     </p>
     <p class="simpara">
      La valeur peut aussi être changée au moyen de <code class="literal">mysqli_options(link,
      MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size)</code>.
     </p>
    </dd>
   
   
    <dt id="ini.mysqlnd.net-read-buffer-size">
     <code class="parameter">mysqlnd.net_read_buffer_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Taille maximale du segment en lecture lors de la lecture du corps d&#039;un
      paquet de commande MySQL. Le protocole serveur de MySQL encapsule toutes
      ses commandes dans des paquets. Les paquets consistent en un en-tête court
      suivi d&#039;un corps contenant les infos. La taille du corps est encodée dans
      l&#039;en-tête. <code class="literal">mysqlnd</code> lit le corps sous forme de segments
      de <code class="literal">MIN(header.size, mysqlnd.net_read_buffer_size)</code>
      octets. Si le corps d&#039;un paquet est plus grand que
      <code class="literal">mysqlnd.net_read_buffer_size</code> octets,
      <code class="literal">mysqlnd</code> doit alors appeler <code class="literal">read()</code>
      plusieurs fois.
     </p>
     <p class="simpara">
      La valeur peut aussi être changée au moyen de <code class="literal">mysqli_options(link,
      MYSQLI_OPT_NET_READ_BUFFER_SIZE, size)</code>.
     </p>
    </dd>
   
   
   <dt id="ini.mysqlnd.sha256-server-public-key">
     <code class="parameter">mysqlnd.sha256_server_public_key</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      En rapport avec le plugin d&#039;authentification SHA-256.
      Fichier contenant la clé publique RSA sur serveur MySQL.
     </p>
     <p class="simpara">
      Les clients peuvent soit omettre de définir une clé publique RSA et spécifier
      la clé via la directive de configuration PHP, ou bien, définir la clé
      au moment de l&#039;exécution en utilisant la fonction <span class="function"><a href="mysqli.options.php" class="function">mysqli_options()</a></span>.
      Si aucun fichier de clé publique RSA n&#039;est fourni par le client, alors la clé
      sera échangée conformément à la procédure du plugin d&#039;authentification standard
      SHA-256.
     </p>
    </dd>
   
  
   <dt id="ini.mysqlnd.trace-alloc">
    <code class="parameter">mysqlnd.trace_alloc</code>
    <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
   </dt>
   <dd>
    <p class="simpara">
    </p>
   </dd>
  
  
   <dt id="ini.mysqlnd.fetch_data_copy">
    <code class="parameter">mysqlnd.fetch_data_copy</code>
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
   </dt>
   <dd>
    <p class="simpara">
     Impose la copie des jeux de résultats depuis les tampons internes vers
     des variables PHP au lieu d&#039;utiliser le mécanisme par défaut de référence
     et de copie sur écriture. Se référer aux,
     <a href="mysqlnd.memory.php" class="link">notes d&#039;implémentation sur la gestion de mémoire</a>
     pour plus de détails.
    </p>
    <p class="simpara">
     Copier les jeux de résultats au lieu d&#039;avoir des variables PHP les référençant permet de libérer au plus tôt la mémoire occupée par les variables PHP. En fonction du code de l&#039;API cliente, les requêtes actuelles et de la taille de leurs jeux de résultats, ceci peut réduire l&#039;empreinte mémoire de mysqlnd.
    </p>
    <p class="simpara">
      Ne pas activer avec PDO_MySQL. PDO_MySQL ne supporte pas encore ce mode.
    </p>
    <blockquote class="note"><p><strong class="note">Note</strong>: 
     <p class="simpara">Supprimé à partir de PHP 8.1.0</p>
    </p></blockquote>
   </dd>
  
  </dl>

</div>
<?php manual_footer($setup); ?>