<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysqli.quickstart.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'mysqli.quickstart.connections.php',
    1 => 'Conex&otilde;es',
    2 => 'Conex&otilde;es',
  ),
  'up' => 
  array (
    0 => 'mysqli.quickstart.php',
    1 => 'Guia de in&iacute;cio r&aacute;pido',
  ),
  'prev' => 
  array (
    0 => 'mysqli.quickstart.dual-interface.php',
    1 => 'Interface dupla, procedural e orientada a objetos',
  ),
  'next' => 
  array (
    0 => 'mysqli.quickstart.statements.php',
    1 => 'Executando instru&ccedil;&otilde;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/mysqli/quickstart.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqli.quickstart.connections" class="section">
  <h2 class="title">Conexões</h2>
  <p class="para">
   O servidor MySQL suporta o uso de diferentes camadas de
   transporte para conexões. Conexões usam TCP/IP, sockets de domínio Unix ou
   pipes nomeados do Windows.
  </p>
  <p class="para">
   O nome de servidor <code class="literal">localhost</code> tem um significado especial.
   Ele é vinculado ao uso de sockets de domínio Unix.
   Para abrir uma conexão TCP/IP ao servidor local, <code class="literal">127.0.0.1</code> deve ser usado
   ao invés do nome <code class="literal">localhost</code>.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemplo #1 Significado especial de localhost</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"localhost"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">host_info </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"127.0.0.1"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">, </span><span style="color: #0000BB">3306</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">host_info </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>O exemplo acima produzirá:</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Localhost via UNIX socket
127.0.0.1 via TCP/IP
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <strong>Padrão dos parâmetros de conexão</strong>
  </p>
  <p class="para">
   Dependendo da função de conexão usada, alguns parâmetros
   podem ser omitidos. Se um parâmetro não for fornecido, a extensão tenta
   usar os valores padrões definidos no arquivo de configuração do PHP.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemplo #2 Padrões de configuração</strong></p>
    <div class="example-contents">
<div class="inicode"><pre class="inicode">mysqli.default_host=192.168.2.27
mysqli.default_user=root
mysqli.default_pw=&quot;&quot;
mysqli.default_port=3306
mysqli.default_socket=/tmp/mysql.sock</pre>
</div>
    </div>

   </div>
  </p>
  <p class="para">
   Os valores dos parâmetros resultantes são então passados à biblioteca cliente
   que é usada pela extensão. Se a biblioteca cliente detecta parâmetros vazios ou indefinidos,
   ela pode usar seus próprios valores padrão internos.
  </p>
  <p class="para">
   <strong>Padrões de conexão internos da biblioteca</strong>
  </p>
  <p class="para">
   Se o valor do servidor for indefinido ou vazio, a biblioteca cliente irá
   considerar uma conexão socket Unix em <code class="literal">localhost</code>.
   Se o socket for indefinido ou vazio, e uma conexão socket Unix for solicitada,
   é feita tentativa de conexão ao socket padrão em
   <code class="literal">/tmp/mysql.sock</code>.
  </p>
  <p class="para">
   Em sistemas Windows, o nome de servidor &#039;<code class="literal">.</code>&#039; é interpretado
   pela biblioteca cliente como uma tentativa de se abrir uma conexão baseada em pipe nomeado
   do Windows. Neste caso, o parâmetro socket é interpretado como o nome do
   pipe. Se não informado ou vazio, o socket (nome do pipe) será igual ao padrão
   <code class="literal">\\.\pipe\MySQL</code>.
  </p>
  <p class="para">
   Se a conexão a ser estabelecida não for baseada em socket de domínio Unix nem em pipe nomeado Windows,
   e o parâmetro da porta estiver indefinido, a biblioteca usará
   o valor padrão de porta <code class="literal">3306</code>.
  </p>
  <p class="para">
   A biblioteca <a href="mysqlnd.overview.php" class="link">mysqlnd</a> e a Biblioteca Cliente
   MySQL (libmysqlclient) implementam a mesma lógica para determinar os padrões.
  </p>
  <p class="para">
   <strong>Opções de conexão</strong>
  </p>
  <p class="para">
   Opções de conexão estão disponíveis para, por exemplo, definir
   comando de inicialização que são executados na conexão, ou para requisitar uso
   de um conjunto de caracteres específico. Opções de conexão devem ser definidas antes que uma
   conexão seja estabelecida.
  </p>
  <p class="para">
   Para definir uma opção de conexão, a operação de conexão deve ser
   realizada em três passos: criar um manipulador de conexão com
   <span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span> ou <span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::__construct()</a></span>,
   definir as opções necessárias usando <span class="methodname"><a href="mysqli.options.php" class="methodname">mysqli::options()</a></span>,
   e estabelecer a conexão à rede com <span class="methodname"><a href="mysqli.real-connect.php" class="methodname">mysqli::real_connect()</a></span>.
  </p>
  <p class="para">
   <strong>Agrupamento de conexão</strong>
  </p>
  <p class="para">
   A extensão mysqli suporta conexões persistentes de banco de dados, que
   são um tipo especial de conexões agrupadas. Por padrão, cada conexão ao banco
   aberta por um script é explicitamente fechada pelo usuário durante a execução
   ou liberada automaticamente ao final do script. Com uma conexão permanente
   isso não acontece. Ao invés disso, ela é colocada em um grupo para reúso posterior, se
   uma conexão ao mesmo servidor, usando o mesmo usuário, senha, socket, porta
   e banco de dados padrão, for aberta. O reúso economiza tempo e reduz a sobrecarga de conexão.
  </p>
  <p class="para">
   Cada processo do PHP usa seu próprio agrupamento de conexões mysqli.
   Dependendo do modelo de implantação do servidor web, um processo PHP pode servir a
   uma ou múltiplas requisições. Portanto, uma conexão agrupada pode ser usada
   por um ou mais scripts subsequentemente.
  </p>
  <p class="para">
   <strong>Conexão persistente</strong>
  </p>
  <p class="para">
   Se uma conexão persistente sem uso para uma certa combinação de servidor, usuário,
   senha, socket, porta e banco padrão não puder ser encontrada no agrupamento,
   a extensão mysqli abre uma nova conexão. O uso de conexões persistentes pode ser
   habilitado e desabilitado usando a diretiva <a href="mysqli.configuration.php#ini.mysqli.allow-persistent" class="link">mysqli.allow_persistent</a> do PHP.
   O número total de conexões abertas por um script pode ser limitado com
   <a href="mysqli.configuration.php#ini.mysqli.max-links" class="link">mysqli.max_links</a>. O número máximo de conexões persistentes
   por processo PHP pode ser restringido com <a href="mysqli.configuration.php#ini.mysqli.max-persistent" class="link">mysqli.max_persistent</a>.
   Favor observar que o servidor web pode gerar muitos processos PHP.
  </p>
  <p class="para">
   Uma queixa comum sobre conexões permanentes é que seus estados não
   são redefinidos antes do reúso. Por exemplo, transações abertas e não terminadas não são
   automaticamente desfeitas. Além disso, mudanças de autorização, que aconteceram
   no intervalo entre a inserção da conexão no agrupamento e seu reúso,
   não terão efeito. Isto pode ser visto como um efeito colateral indesejado. De outro modo,
   o nome <code class="literal">persistent</code>e pode ser entendido como uma promessa de
   que o estado da conexão irá persistir..
  </p>
  <p class="para">
   A extensão mysqli suporta ambas as interpretações de conexão persistente:
   persistência do estado, e redefinição do estado, antes do reúso. O padrão é redefinição.
   Antes que uma conexão persistente seja reutilizada, a extensão mysqli chama
   <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> implicitamente para redefinir o estado. A
   conexão persistente aparece ao usuário como se tivesse acabado de ser aberta. Nenhum
   artefato de usos anteriores é visível.
  </p>
  <p class="para">
   A chamada a <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> é uma operação custosa.
   Para melhor desempenho, usuários podem querer recompilar a extensão com a opção
   <strong><code>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</code></strong> definida.
  </p>
  <p class="para">
   É deixado ao usuário a escolha entre comportamento seguro e melhor desempenho.
   Ambos são objetivos de otimização válidos. Para facilidade de uso, o comportamento seguro
   foi escolhido como padrão com o prejuízo do desempenho.
  </p>
  <p class="para">
   <strong>Veja também</strong>
  </p>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::__construct()</a></span></li>
    <li><span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span></li>
    <li><span class="methodname"><a href="mysqli.options.php" class="methodname">mysqli::options()</a></span></li>
    <li><span class="methodname"><a href="mysqli.real-connect.php" class="methodname">mysqli::real_connect()</a></span></li>
    <li><span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span></li>
    <li><a href="mysqli.get-host-info.php" class="link">$mysqli::host_info</a></li>
    <li><a href="mysqli.configuration.php" class="link">Opções de Configuração MySQLi</a></li>
    <li><a href="features.persistent-connections.php" class="link">Conexões Persistentes de Banco de Dados</a></li>
   </ul>
  </p>
 </div><?php manual_footer($setup); ?>