mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
* Ajustar link de novos recursos e incompatibilidades da migração do 7.0 para 7.1. * docs: missing translation of reference/mysqli. * docs: missing translation of reference/mysqli/functions. * docs: missing translation of reference/mysqli/mysqli * docs: remove english text. Co-authored-by: Marcos Marcolin <marcos@ixcsoft.com.br>
142 lines
3.9 KiB
XML
142 lines
3.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: a714378ed87cdbdbde3b10ded183e8df7b243cb4 Maintainer: marcosmarcolin Status: ready --><!-- CREDITS: marcosmarcolin -->
|
|
<chapter xml:id="mysqli.persistconns" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
|
|
<title>A extensão mysqli e conexões persistentes</title>
|
|
|
|
<para>
|
|
A ideia por trás das conexões persistentes é
|
|
que uma conexão entre um processo cliente e um banco de dados pode ser
|
|
reutilizada por um processo cliente, em vez de ser criada e destruída
|
|
várias vezes. Isso reduz a sobrecarga de criar novas conexões
|
|
sempre que uma é necessária, pois as conexões não utilizadas
|
|
são armazenadas em cache e estão prontas para serem reutilizadas.
|
|
</para>
|
|
|
|
<para>
|
|
Ao contrário da extensão mysql, mysqli não fornece uma função separada
|
|
para abrir conexões persistentes. Para abrir uma conexão persistente,
|
|
você deve preceder <literal>p:</literal> ao nome do host ao conectar.
|
|
</para>
|
|
|
|
<para>
|
|
O problema com conexões persistentes é que elas podem ser deixadas em
|
|
estados imprevisíveis pelos clientes. Por exemplo, um bloqueio de tabela
|
|
pode ser ativado antes que um cliente seja encerrado inesperadamente. Um novo
|
|
processo cliente reutilizando essa conexão persistente obterá a conexão
|
|
<quote>como está</quote>. Qualquer limpeza precisaria ser feita pelo novo
|
|
processo cliente antes que ele pudesse fazer bom uso da conexão ]
|
|
persistente, aumentando a carga do programador.
|
|
</para>
|
|
|
|
<para>
|
|
A conexão persistente da extensão <literal>mysqli</literal>,
|
|
no entanto, fornece código de manipulação de limpeza integrado. A limpeza
|
|
realizada pelo <literal>mysqli</literal> inclui:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reverter transações ativas
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fechar e descartar tabelas temporárias
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Desbloquear tabelas
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Redefinir variáveis de sessão
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fechar declarações preparadas (sempre acontece com PHP)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fechar manipulador
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Liberar bloqueios adquiridos com <function>GET_LOCK</function>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Isso garante que as conexões persistentes estejam em um estado limpo ao
|
|
retornar do pool de conexões, antes que o processo do cliente as use.
|
|
</para>
|
|
|
|
<para>
|
|
A extensão <literal>mysqli</literal> faz essa limpeza
|
|
chamando automaticamente a função C-API
|
|
<literal>mysql_change_user()</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
O recurso de limpeza automática tem vantagens e desvantagens.
|
|
A vantagem é que o programador não precisa mais se preocupar em
|
|
adicionar código de limpeza, pois ele é chamado automaticamente. No entanto, a
|
|
desvantagem é que o código pode ser um <emphasis>pouco</emphasis>
|
|
mais lento, pois o código para executar a limpeza precisa ser executado
|
|
sempre que uma conexão é retornada do pool de conexões.
|
|
</para>
|
|
|
|
<para>
|
|
É possível desligar o código de limpeza automática, compilando o
|
|
PHP com
|
|
|
|
<constant>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</constant>
|
|
|
|
definido.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
A extensão <literal>mysqli</literal> suporta conexões
|
|
persistentes ao usar MySQL Native Driver ou MySQL Client
|
|
Library.
|
|
</para>
|
|
</note>
|
|
|
|
</chapter>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|