<?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.plugin.php',
    1 => 'API du plugin du driver natif MySQL',
    2 => 'API du plugin du driver natif MySQL',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.memory.php',
    1 => 'Gestion de la m&eacute;moire',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.plugin.mysql-proxy.php',
    1 => 'Comparaison des plugins mysqlnd avec proxy MySQL',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/mysqlnd/plugin.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/mysqlnd.plugin.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.plugin" class="chapter">
 <h1 class="title">API du plugin du driver natif MySQL</h1>
<h2>Sommaire</h2><ul class="chunklist chunklist_chapter"><li><a href="mysqlnd.plugin.mysql-proxy.php">Comparaison des plugins mysqlnd avec proxy MySQL</a></li><li><a href="mysqlnd.plugin.obtaining.php">Obtenir l'API du plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.architecture.php">Architecture du plugin du driver natif</a></li><li><a href="mysqlnd.plugin.api.php">L'API du plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.developing.php">Bien commencer la compilation d'un plugin mysqlnd</a></li></ul>

 <p class="simpara">
  L&#039;API du plugin du driver natif MySQL est une fonctionnalité
  du driver natif MySQL, ou <code class="literal">mysqlnd</code>.
  Le plugin <code class="literal">Mysqlnd</code> opère sur la couche entre
  les applications PHP et le serveur MySQL. Il est comparable
  à un proxy MySQL. Un proxy MySQL opère sur une couche entre toutes
  les applications clientes MySQL, par exemple, une application PHP
  et un serveur MySQL. Le plugin <code class="literal">Mysqlnd</code>
  peut entreprendre des tâches typiques de proxy MySQL comme
  l&#039;équilibrage de charge, ainsi que le suivi et l&#039;optimisation
  des performances. En raison d&#039;une architecture et d&#039;une localisation
  différente, le plugin <code class="literal">mysqlnd</code> n&#039;a pas tous les
  inconvénients d&#039;un proxy MySQL. Par exemple, avec le plugin, il
  n&#039;y a pas qu&#039;un seul point d&#039;échec, pas de serveur de proxy dédié
  à déployer, et pas de nouveau langage à apprendre (Lua).
 </p>
 <p class="simpara">
  Un plugin <code class="literal">mysqlnd</code> peut être exécuté comme une extension
  à <code class="literal">mysqlnd</code>. Un plugin peut intercepter la majorité des
  fonctions <code class="literal">mysqlnd</code>. Les fonctions <code class="literal">mysqlnd</code>
  sont appelées par l&#039;extension PHP MySQL comme
  <code class="literal">ext/mysql</code>, <code class="literal">ext/mysqli</code>, et
  <code class="literal">PDO_MYSQL</code>. Comme résultat, il est possible pour un
  plugin <code class="literal">mysqlnd</code> d&#039;intercepter tous les appels effectués
  par ces extensions depuis une application cliente.
 </p>
 <p class="simpara">
  Les appels aux fonctions internes <code class="literal">mysqlnd</code> peuvent
  également être interceptés ou remplacés. Il n&#039;y a aucune restriction
  sur la manipulation des tables de fonctions internes <code class="literal">mysqlnd</code>.
  Il est possible de définir des actions pour faire que lorsque
  certaines fonctions <code class="literal">mysqlnd</code> sont appelées
  par l&#039;extension qui utilise <code class="literal">mysqlnd</code>, l&#039;appel
  est redirigé vers la fonction appropriée du plugin
  <code class="literal">mysqlnd</code>. La possibilité de manipuler les tables
  de fonctions internes <code class="literal">mysqlnd</code> dans ce sens permet
  un maximum de flexibilité.
 </p>
 <p class="simpara">
  Le plugin <code class="literal">Mysqlnd</code> est en fait, une extension PHP,
  écrite en C, qui utilise l&#039;API du plugin <code class="literal">mysqlnd</code>
  (qui est compilé dans le driver natif MySQL, <code class="literal">mysqlnd</code>).
  Le plugin peut être à 100% transparent pour les applications PHP. Aucune
  modification aux applications n&#039;est nécessaire car le plugin opère
  sur une couche différente. Le plugin <code class="literal">mysqlnd</code>
  peut être utilisé dans une couche en dessous de <code class="literal">mysqlnd</code>.
 </p>
 <p class="simpara">
  La liste suivante représente quelques applications possibles
  du plugin <code class="literal">mysqlnd</code>.
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    L&#039;équilibrage de charge.
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Séparation des lectures et des écritures. Un exemple de cette fonctionnalité
      est l&#039;extension PECL/mysqlnd_ms (Maître/esclave). Cette extension sépare
      les requêtes de lecture et d&#039;écriture pour une configuration de réplication.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Basculement
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Round-Robin, le moins chargé
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Surveillance
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Journalisation des requêtes
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Analyse de requêtes
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Audit de requêtes. Un exemple de ceci est l&#039;extension
      PECL/mysqlnd_sip (SQL Injection Protection). Cette extension
      inspecte les requêtes et exécute uniquement celles qui sont
      autorisées suivant des ensembles de règles.
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Performance
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      La mise en cache. Un exemple de ceci est l&#039;extension
      PECL/mysqlnd_qc (Query Cache).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Étranglement
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Fragmentation. Un exemple de ceci est l&#039;extension
      PECL/mysqlnd_mc (Multi Connect). Cette extension tente
      de séparer une requête SELECT en n parties, en utilisant
      des requêtes du type SELECT ... LIMIT part_1, SELECT LIMIT part_n.
      L&#039;extension envoie les requêtes à des serveurs MySQL distincts
      et fusionne ensuite le résultat à destination du client.
     </span>
    </li>
   </ul>
  </li>
 </ul>
 <p class="simpara">
  <strong>Plugins du driver natif MySQL disponibles</strong>
 </p>
 <p class="simpara">
  Il y a déjà plusieurs plugins mysqlnd de disponibles.
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_mc</strong> -Plugin Multi Connexion.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_ms</strong> - Plugin Maître Esclave.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_qc</strong> - Plugin de mise en cache de requêtes.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_pscache</strong> - Plugin de mise en cache de gestionnaire
    de requêtes préparées.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_sip</strong> - Plugin permettant la protection
    contre les injections SQL.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_uh</strong> - Plugin de gestionnaire d&#039;utilisateurs.
   </span>
  </li>
 </ul>
 
 
 
 
 
</div>
<?php manual_footer($setup); ?>