<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API del plugin del controlador nativo MySQL',
    2 => 'API del plugin del controlador nativo MySQL',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.memory.php',
    1 => 'Gesti&oacute;n de la memoria',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.plugin.mysql-proxy.php',
    1 => 'Comparaci&oacute;n de los plugins mysqlnd con proxy MySQL',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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 del plugin del controlador nativo MySQL</h1>
<h2>Tabla de contenidos</h2><ul class="chunklist chunklist_chapter"><li><a href="mysqlnd.plugin.mysql-proxy.php">Comparaci&oacute;n de los plugins mysqlnd con proxy MySQL</a></li><li><a href="mysqlnd.plugin.obtaining.php">Obtener la API del plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.architecture.php">Arquitectura del plugin del controlador nativo</a></li><li><a href="mysqlnd.plugin.api.php">La API del plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.developing.php">C&oacute;mo comenzar a compilar un plugin mysqlnd</a></li></ul>

 <p class="simpara">
  La API del plugin del controlador nativo MySQL es una funcionalidad
  del controlador nativo MySQL, o <code class="literal">mysqlnd</code>.
  El plugin <code class="literal">Mysqlnd</code> opera en la capa entre
  las aplicaciones PHP y el servidor MySQL. Es comparable
  a un proxy MySQL. Un proxy MySQL opera en una capa entre todas
  las aplicaciones cliente MySQL, por ejemplo, una aplicación PHP
  y un servidor MySQL. El plugin <code class="literal">Mysqlnd</code>
  puede realizar tareas típicas de proxy MySQL como
  el equilibrio de carga, así como el seguimiento y la optimización
  de las prestaciones. Debido a una arquitectura y una localización
  diferente, el plugin <code class="literal">mysqlnd</code> no tiene todos los
  inconvenientes de un proxy MySQL. Por ejemplo, con el plugin, no
  hay un único punto de fallo, no hay un servidor proxy dedicado
  que desplegar, y no hay un nuevo lenguaje que aprender (Lua).
 </p>
 <p class="simpara">
  Un plugin <code class="literal">mysqlnd</code> puede ejecutarse como una extensión
  a <code class="literal">mysqlnd</code>. Un plugin puede interceptar la mayoría de
  las funciones <code class="literal">mysqlnd</code>. Las funciones <code class="literal">mysqlnd</code>
  son llamadas por la extensión PHP MySQL como
  <code class="literal">ext/mysql</code>, <code class="literal">ext/mysqli</code>, y
  <code class="literal">PDO_MYSQL</code>. Como resultado, es posible para un
  plugin <code class="literal">mysqlnd</code> interceptar todas las llamadas realizadas
  por estas extensiones desde una aplicación cliente.
 </p>
 <p class="simpara">
  Las llamadas a las funciones internas <code class="literal">mysqlnd</code> pueden
  también ser interceptadas o reemplazadas. No hay ninguna restricción
  sobre la manipulación de las tablas de funciones internas <code class="literal">mysqlnd</code>.
  Es posible definir acciones para que cuando
  ciertas funciones <code class="literal">mysqlnd</code> sean llamadas
  por la extensión que utiliza <code class="literal">mysqlnd</code>, la llamada
  sea redirigida hacia la función apropiada del plugin
  <code class="literal">mysqlnd</code>. La posibilidad de manipular las tablas
  de funciones internas <code class="literal">mysqlnd</code> de este modo permite
  un máximo de flexibilidad.
 </p>
 <p class="simpara">
  El plugin <code class="literal">Mysqlnd</code> es, en realidad, una extensión PHP,
  escrita en C, que utiliza la API del plugin <code class="literal">mysqlnd</code>
  (que está compilada en el controlador nativo MySQL, <code class="literal">mysqlnd</code>).
  El plugin puede ser 100% transparente para las aplicaciones PHP. No se requiere
  ninguna modificación a las aplicaciones ya que el plugin opera
  en una capa diferente. El plugin <code class="literal">mysqlnd</code>
  puede ser utilizado en una capa por debajo de <code class="literal">mysqlnd</code>.
 </p>
 <p class="simpara">
  La lista siguiente representa algunas aplicaciones posibles
  del plugin <code class="literal">mysqlnd</code>.
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    El equilibrio de carga.
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Separación de lecturas y escrituras. Un ejemplo de esta funcionalidad
      es la extensión PECL/mysqlnd_ms (Maestro/esclavo). Esta extensión separa
      las consultas de lectura y escritura para una configuración de replicación.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Conmutación por error
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Round-Robin, el menos cargado
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Supervisión
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Registro de consultas
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Análisis de consultas
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Auditoría de consultas. Un ejemplo de esto es la extensión
      PECL/mysqlnd_sip (Protección contra Inyección SQL). Esta extensión
      inspecciona las consultas y ejecuta únicamente aquellas que son
      permitidas siguiendo conjuntos de reglas.
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Rendimiento
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      La caché. Un ejemplo de esto es la extensión
      PECL/mysqlnd_qc (Query Cache).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Limitación
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Fragmentación. Un ejemplo de esto es la extensión
      PECL/mysqlnd_mc (Multi Connect). Esta extensión intenta
      separar una consulta SELECT en n partes, utilizando
      consultas del tipo SELECT ... LIMIT part_1, SELECT LIMIT part_n.
      La extensión envía las consultas a servidores MySQL distintos
      y luego fusiona el resultado hacia el cliente.
     </span>
    </li>
   </ul>
  </li>
 </ul>
 <p class="simpara">
  <strong>Plugins del controlador nativo MySQL disponibles</strong>
 </p>
 <p class="simpara">
  Ya hay varios plugins mysqlnd disponibles.
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_mc</strong> - Plugin Multi Conexión.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_ms</strong> - Plugin Maestro Esclavo.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_qc</strong> - Plugin de caché de consultas.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_pscache</strong> - Plugin de caché de gestor
    de consultas preparadas.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_sip</strong> - Plugin que permite la protección
    contra inyecciones SQL.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_uh</strong> - Plugin de gestor de usuarios.
   </span>
  </li>
 </ul>
 
 
 
 
 
</div>
<?php manual_footer($setup); ?>