<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API do plugin do Driver Nativo MySQL',
    2 => 'API do plugin do Driver Nativo MySQL',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.memory.php',
    1 => 'Gerenciamento de Mem&oacute;ria',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.plugin.mysql-proxy.php',
    1 => 'Uma compara&ccedil;&atilde;o de plugins mysqlnd com Proxy MySQL',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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 do plugin do Driver Nativo MySQL</h1>
<h2>Índice</h2><ul class="chunklist chunklist_chapter"><li><a href="mysqlnd.plugin.mysql-proxy.php">Uma compara&ccedil;&atilde;o de plugins mysqlnd com Proxy MySQL</a></li><li><a href="mysqlnd.plugin.obtaining.php">Obtendo a API do plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.architecture.php">Arquitetura do Plugin do Driver Nativo MySQL</a></li><li><a href="mysqlnd.plugin.api.php">A API do plugin mysqlnd</a></li><li><a href="mysqlnd.plugin.developing.php">Come&ccedil;ando a construir um plugin mysqlnd</a></li></ul>

 <p class="simpara">
  A API de plugin do Driver Nativo MySQL é um recurso do Driver Nativo
  MySQL, ou <code class="literal">mysqlnd</code>. Os plugins <code class="literal">Mysqlnd</code>
  operam na camada entre os aplicativos PHP e o servidor
  MySQL. Isso é comparável ao Proxy MySQL. O Proxy MySQL opera em uma
  camada entre qualquer aplicativo cliente MySQL, por exemplo, um aplicativo
  PHP e o servidor MySQL. Os plugins <code class="literal">Mysqlnd</code>
  podem realizar tarefas típicas do Proxy MySQL, como balanceamento de carga,
  monitoramento e otimizações de desempenho. Devido à arquitetura e
  localização diferentes, os plugins <code class="literal">mysqlnd</code> não
  apresentam algumas das desvantagens do Proxy MySQL. Por exemplo, com plugins,
  não há um ponto único de falha, nenhum servidor proxy dedicado para se implantar
  e nenhuma nova linguagem de programação para aprender (Lua).
 </p>
 <p class="simpara">
  Um plugin <code class="literal">mysqlnd</code> pode ser pensado como uma extensão
  do <code class="literal">mysqlnd</code>. Plugins podem interceptar a maioria das
  funções do <code class="literal">mysqlnd</code>. As funções <code class="literal">mysqlnd</code>
  são chamadas pelas extensões PHP MySQL como
  <code class="literal">ext/mysql</code>, <code class="literal">ext/mysqli</code> e
  <code class="literal">PDO_MYSQL</code>. Como resultado, é possível para um
  plugin <code class="literal">mysqlnd</code> interceptar todas as chamadas feitas para essas
  extensões a partir da aplicação cliente.
 </p>
 <p class="simpara">
  Chamadas internas de função <code class="literal">mysqlnd</code> também podem ser
  interceptadas ou substituídas. Não há restrições na manipulação
  de tabelas de funções internas do <code class="literal">mysqlnd</code>. É possível
  configurar as coisas para que quando certas funções <code class="literal">mysqlnd</code>
  sejam chamadas pelas extensões que usam
  <code class="literal">mysqlnd</code>, a chamada seja direcionada para a função
  apropriada no plugin <code class="literal">mysqlnd</code>. A capacidade de
  manipular tabelas de funções internas do <code class="literal">mysqlnd</code> desta
  forma permite máxima flexibilidade para plugins.
 </p>
 <p class="simpara">
  Plugins <code class="literal">Mysqlnd</code> são na verdade extensões PHP, escritas
  em C, que usam a API do plugin <code class="literal">mysqlnd</code> (que está
  embutida no Driver Nativo MySQL, <code class="literal">mysqlnd</code>) . Os plugins
  podem ser 100% transparentes para aplicações PHP. Nenhuma alteração
  na aplicação é necessária porque os plugins operam em uma camada diferente. O
  plugin <code class="literal">mysqlnd</code> pode ser pensado como operando em uma
  camada abaixo do <code class="literal">mysqlnd</code>.
 </p>
 <p class="simpara">
  A lista a seguir representa algumas aplicações possíveis de
  plugins <code class="literal">mysqlnd</code>.
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    Balanceamento de Carga
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Divisão de leitura/gravação. Um exemplo disso é a extensão PECL/mysqlnd_ms
      (Master Slave). Esta extensão divide consultas de leitura/gravação
      para uma configuração de replicação.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Failover
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Round-Robin, menos carregado
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Monitoramento
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Registro de Consultas
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Análise de Consultas
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Auditoria de Consultas. Um exemplo disso é a extensão PECL/mysqlnd_sip (Proteção
      Contra Injeção SQL). Esta extensão inspeciona consultas
      e executa apenas aquelas permitidas de acordo com um conjunto de regras.
     </span>
    </li>
   </ul>
  </li>
  <li class="listitem">
   <span class="simpara">
    Desempenho
   </span>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Cache. Um exemplo disso é a extensão PECL/mysqlnd_qc (Cache de
      Consultas).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Redução de velocidade
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Fragmentação. Um exemplo disso é a extensão PECL/mysqlnd_mc (Multi
      Conexão). Esta extensão tentará dividir uma instrução SELECT
      em n partes, usando SELECT ... LIMIT part_1, SELECT
      LIMIT part_n. Ele envia as consultas para servidores MySQL distintos e
      mescla o resultado no cliente.
     </span>
    </li>
   </ul>
  </li>
 </ul>
 <p class="simpara">
  <strong>Plugins Disponíveis do Driver Nativo MySQL</strong>
 </p>
 <p class="simpara">
  Existem vários plug-ins do mysqlnd já disponíveis. Esses
  incluem:
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_mc</strong> - plugin Multi
    Conexão.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_ms</strong> - plugin Master
    Slave.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_qc</strong> - plugin Query
    Cache.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_pscache</strong> - plugin de Cache
    de Manipulador de Instruções Preparadas.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_sip</strong> - plugin de Proteção Contra
    Injeção SQL.
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <strong>PECL/mysqlnd_uh</strong> - plugin de Manipulador
    de Usuário.
   </span>
  </li>
 </ul>
 
 
 
 
 
</div>
<?php manual_footer($setup); ?>