mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
mysqlinfo : fix XML by converting para to simpara tags via script
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 968c2bc60de3e93d7f38be0b9d2d1b9685a16ea7 Maintainer: leonardolara Status: ready -->
|
||||
<chapter xml:id="mysqlinfo.concepts" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- EN-Revision: 7cff4d34f0324c9de72d15957e1b62e20f37dfaf Maintainer: leonardolara Status: ready -->
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlinfo.concepts">
|
||||
<title>Conceitos</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Esses conceitos são específicos dos drivers MySQL para PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<section xml:id="mysqlinfo.concepts.buffering">
|
||||
<title>Consultas com buffer e sem buffer</title>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
As consultas usam o modo de buffer por padrão. Isso significa que os resultados da consulta são
|
||||
imediatamente transferidos do servidor MySQL para o PHP e então mantidos na memória
|
||||
do processo PHP. Isso permite operações adicionais, como contar o
|
||||
@@ -20,33 +20,33 @@
|
||||
conjunto de resultados sejam desativadas ou o conjunto de resultados seja explicitamente liberado, o que acontecerá
|
||||
automaticamente durante o término da solicitação, o mais tardar. A terminologia "armazenar resultado" também é usada
|
||||
para o modo buffer, pois todo o conjunto de resultados é armazenado de uma só vez.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
<simpara>
|
||||
Ao usar a libmysqlclient como biblioteca, o limite de memória do PHP não contará a memória usada
|
||||
para conjuntos de resultados, a menos que os dados sejam buscados em variáveis PHP. Com o mysqlnd
|
||||
a memória contabilizada incluirá o conjunto completo de resultados.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Consultas MySQL sem buffer executam a consulta e aguardam
|
||||
que os dados do servidor MySQL sejam buscados. Isso usa menos memória
|
||||
do lado do PHP, mas pode aumentar a carga no servidor. A menos que o conjunto completo de resultados tenha sido
|
||||
obtido do servidor, nenhuma consulta adicional poderá ser enviada pela mesma conexão. Consultas
|
||||
sem buffer também podem ser chamadas de "resultado de uso". Depois que todas as linhas do conjunto de resultados
|
||||
forem buscadas, o conjunto de resultados desaparecerá e não poderá ser iterado novamente.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Seguindo essas características, consultas sem buffer devem ser utilizadas apenas
|
||||
quando se espera um grande conjunto de resultados que será processado sequencialmente.
|
||||
As consultas sem buffer contêm uma série de armadilhas que tornam mais
|
||||
difícil seu uso, por exemplo, o número de linhas no conjunto de resultados é desconhecido
|
||||
até que a última linha seja obtida.
|
||||
Consultas em buffer são a maneira mais fácil e flexível de processar conjuntos de resultados.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<!-- @TODO
|
||||
- Add list of issues people run into with unbuffered queries
|
||||
@@ -55,10 +55,10 @@
|
||||
- Show "free_result" functions / unset usage with buffered queries 8double-check with Andrey on mysqlnd optimizations
|
||||
-->
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Como as consultas em buffer são o padrão, os exemplos abaixo demonstrarão como
|
||||
executar consultas sem buffer com cada API.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<example>
|
||||
<title>Exemplo de consulta sem buffer: mysqli</title>
|
||||
@@ -97,23 +97,23 @@ foreach ($unbufferedResult as $row) {
|
||||
<section xml:id="mysqlinfo.concepts.charset">
|
||||
<title>Conjuntos de caracteres</title>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Idealmente, um conjunto de caracteres adequado será definido no nível do servidor, e isso é descrito
|
||||
na seção <link xlink:href="&url.mysql.charsets.config;">Configuração do conjunto de caracteres</link>
|
||||
do manual do servidor MySQL. Alternativamente, cada API MySQL oferece um método para definir
|
||||
o conjunto de caracteres em tempo de execução.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<caution>
|
||||
<title>O conjunto de caracteres e escape de caracteres</title>
|
||||
<para>
|
||||
<simpara>
|
||||
O conjunto de caracteres deve ser entendido e definido, pois afeta todas as
|
||||
ações e inclui implicações de segurança. Por exemplo, o mecanismo de escape
|
||||
(por exemplo, <function>mysqli_real_escape_string</function> para mysqli e <methodname>PDO::quote</methodname> para PDO_MySQL) irá aderir a
|
||||
esta configuração. É importante perceber que essas funções não usarão o conjunto
|
||||
de caracteres definido com uma consulta, portanto, por exemplo, o seguinte não terá efeito
|
||||
sobre elas:
|
||||
</para>
|
||||
</simpara>
|
||||
</caution>
|
||||
|
||||
<example>
|
||||
@@ -140,18 +140,18 @@ $mysqli->set_charset('UTF-8');
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Abaixo estão exemplos que demonstram como alterar adequadamente o conjunto de caracteres em tempo de execução
|
||||
usando cada API.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<note>
|
||||
<title>Possível confusão UTF-8</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Como os nomes dos conjuntos de caracteres no MySQL não contêm hífens, a string
|
||||
"utf8" é válida no MySQL para definir o conjunto de caracteres como UTF-8 (codificação Unicode UTF-8 de até 3 bytes). A string
|
||||
"UTF-8" não é válida, pois o uso de "UTF-8" não alterará o conjunto de caracteres e gerará um erro.
|
||||
</para>
|
||||
</simpara>
|
||||
</note>
|
||||
|
||||
<example>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d5ca1ca91dd8393ea8a3215b73722f59654f7849 Maintainer: leonardolara Status: ready --><set xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="set.mysqlinfo">
|
||||
<!-- EN-Revision: 7cff4d34f0324c9de72d15957e1b62e20f37dfaf Maintainer: leonardolara Status: ready --><set xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="set.mysqlinfo">
|
||||
<title>Drivers e Plugins MySQL</title>
|
||||
<titleabbrev>MySQL</titleabbrev>
|
||||
|
||||
<info xml:id="mysqlinfo.info">
|
||||
<abstract>
|
||||
<para>
|
||||
<simpara>
|
||||
PHP oferece vários drivers e plugins MySQL para acessar e
|
||||
lidar com o MySQL.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
As diferenças e a funcionalidade das extensões MySQL estão descritas
|
||||
na visão geral desta seção.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
As extensões listadas suportam o protocolo MySQL.
|
||||
Exemplos de servidores de banco de dados compatíveis são
|
||||
<link xlink:href="&url.mariadb;">MariaDB Server</link>,
|
||||
@@ -21,7 +21,7 @@
|
||||
<link xlink:href="&url.perconaserver;">Percona Server for MySQL</link>
|
||||
e
|
||||
<link xlink:href="&url.tidb;">TiDB</link>.
|
||||
</para>
|
||||
</simpara>
|
||||
</abstract>
|
||||
</info>
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
|
||||
<preface xml:id="mysqlinfo.intro">
|
||||
<title>Introdução</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Existem muitas APIs de PHP
|
||||
para acessar bancos de dados MySQL. Os usuários podem escolher entre as
|
||||
extesões <link linkend="book.mysqli">mysqli</link> ou
|
||||
<link linkend="ref.pdo-mysql">PDO_MySQL</link>.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Este guia explica a
|
||||
<link linkend="mysqlinfo.terminology">terminologia</link> usada para descrever
|
||||
cada API, informação sobre a
|
||||
@@ -44,56 +44,56 @@
|
||||
ser usada, e também informação para ajudar a escolher qual
|
||||
<link linkend="mysqlinfo.library.choosing">biblioteca</link> MySQL a ser usada com
|
||||
a API.
|
||||
</para>
|
||||
</simpara>
|
||||
</preface>
|
||||
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.terminology">
|
||||
<title>Visão geral de terminologia</title>
|
||||
<para>
|
||||
<simpara>
|
||||
Esta seção fornece uma introdução às opções disponíveis
|
||||
ao desenvolver aplicações PHP que precisem interagir com um
|
||||
banco de dados MySQL.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">O que é uma API?</emphasis>
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Uma Interface de Programação para Aplicações, ou API, define as classes,
|
||||
métodos, funções e variáveis que a aplicação precisará chamar
|
||||
para que consiga efetuar a tarefa desejada. No caso de aplicações
|
||||
PHP que precisem comunicar com banco de dados, as APIs
|
||||
necessárias são normalmente expostas através de extensões do PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
APIs podem ser procedurais ou orientadas a objeto. Com uma API procedural, pode-se
|
||||
chamar funções para realizar tarefas, e com uma API orientada a objeto, pode-se
|
||||
instanciar classes e então chamar métodos nos objetos resultantes.
|
||||
Entre as duas opções, a última é a interface recomendada, já que é
|
||||
mais moderna e leva a um código mais organizado.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Ao escrever aplicações PHP que precisam se conectar ao servidor
|
||||
MySQL, existem várias opções de API disponíveis. Este documento
|
||||
discute o que está disponível e como selecionar a melhor solução para
|
||||
cada aplicação.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">O que é um conector?</emphasis>
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Na documentação MySQL, o termo <emphasis>conector</emphasis>
|
||||
se refere a uma parte do software que permite à aplicação se
|
||||
conectar ao servidor de banco de dados MySQL. O MySQL fornece conectores para
|
||||
uma variedade de linguagens, incluindo o PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Se uma aplicação PHP precisa se comunicar com um servidor de banco de dados
|
||||
será necessário escrever código PHP para realizar tais atividades como
|
||||
conexão ao banco de dados, consultas ao banco e outras
|
||||
@@ -103,75 +103,75 @@
|
||||
possivelmente usando outras bibliotecas intermediárias quando necessário. Este
|
||||
software é conhecimento genericamente como conector, já que ele permite à
|
||||
aplicação se <emphasis>conectar</emphasis> ao servidor de banco de dados.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">O que é um Driver?</emphasis>
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Um driver é uma parte do software projetada para se comunicar com um
|
||||
tipo específico de servidor de banco de dados. O driver também pode chamar uma
|
||||
biblioteca, tal como a Bliblioteca Cliente MySQL ou o Driver Nativo
|
||||
MySQL. Estas bibliotecas implementam o protocolo de baixo nível usado para
|
||||
comunicação com o servidor de dados MySQL.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Para exemplificar, a camada de abstração de banco da dados <link linkend="mysqli.overview.pdo">PDO - Objetos de Dados PHP</link> pode usar um dos
|
||||
vários drivers específicos para banco de dados. Um dos drivers
|
||||
disponíveis é o driver PDO MYSQL, que permite fazer interface com
|
||||
o servidor MySQL.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Algumas vezes os termos conector e driver são usados de maneira intercambiável,
|
||||
e isto pode ser confuso. Na documentação relacionada com o MySQL o termo
|
||||
<quote>driver</quote> é reservado para o software que fornece
|
||||
a parte específica de banco de dados de um pacote de conector.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">O que é uma Extensão?</emphasis>
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Na documentação PHP, encontramos um outro termo -
|
||||
<emphasis>extensão</emphasis>. O código PHP consiste de um núcleo,
|
||||
com extensões opcionais à funcionalidade do núcleo. A extensão
|
||||
do PHP relacionada com o MySQL, <literal>mysqli</literal>, é
|
||||
implementada usando o framework de extensão PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Uma extensão tipicamente expõe uma API para o programador PHP, para
|
||||
permitir que suas instalações possam ser usadas programaticamente. Entretanto, algumas
|
||||
extensões que usam o framework de extensão PHP não expõem uma
|
||||
API ao programador PHP.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
A extensão do driver de PDO MySQL, por exemplo, não expõe uma API
|
||||
ao programador PHP, mas fornece uma interface à camada PDO
|
||||
acima dela.
|
||||
</para>
|
||||
</simpara>
|
||||
|
||||
<para>
|
||||
<simpara>
|
||||
Os termos API e extensão não podem ser considerados com o mesmo
|
||||
significado, já que uma extensão não necessáriamente expões uma API ao
|
||||
programador.
|
||||
</para>
|
||||
</simpara>
|
||||
</chapter>
|
||||
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.api.choosing">
|
||||
<title>Escolhendo uma API</title>
|
||||
<para>
|
||||
<simpara>
|
||||
O PHP oferece diferentes APIs para conexão ao MySQL. Pode-se ver abaixo
|
||||
as APIs fornecidas pelas extensões mysqli e PDO. Cada porção de código
|
||||
cria uma conexão a um servidor MySQL sendo executado em "example.com" usando
|
||||
o usuário "user" e a senha "password". E uma consulta é executada para
|
||||
cumprimentar o usuário.
|
||||
</para>
|
||||
</simpara>
|
||||
<example>
|
||||
<title>Comparando as APIs do MySQL</title>
|
||||
<programlisting role="php">
|
||||
@@ -213,15 +213,15 @@ echo htmlentities($row['District']);
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">Comparação de características</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
O desempenho geral de ambas as extensões é considerada aproximadamente
|
||||
a mesma, embora o desempenho da extensão contribui somente para uma
|
||||
fração do tempo total de uma requisição web do PHP. Frequentemente, o impacto é
|
||||
tão baixo quanto 0,1%.
|
||||
</para>
|
||||
</simpara>
|
||||
<informaltable xml:id="mysqlinfo.api.choosing.changelog">
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
@@ -324,19 +324,19 @@ echo htmlentities($row['District']);
|
||||
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.library.choosing">
|
||||
<title>Escolhendo uma biblioteca</title>
|
||||
<para>
|
||||
<simpara>
|
||||
As extensões mysqli e PDO_MySQL são encapsuladores leves de uma
|
||||
biblioteca cliente em C. As extensões podem tanto usar a biblioteca
|
||||
<link linkend="book.mysqlnd">mysqlnd</link> quanto a biblioteca <literal>libmysqlclient</literal>.
|
||||
Escolher uma biblioteca é uma decisão a ser tomada na compilação.
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
A biblioteca mysqlnd é parte da distribuição PHP. Ela oferece
|
||||
recursos como conexões preguiçosas e cache de consultas, que não estão disponíveis
|
||||
com a libmysqlclient, portanto usar a biblioteca mysqlnd interna é altamente recomendado.
|
||||
Consulte a <link linkend="book.mysqlnd">documentação mysqlnd</link> para
|
||||
detalhes adicionais e uma lista de recursos e funcionalidade que ela oferece.
|
||||
</para>
|
||||
</simpara>
|
||||
<example>
|
||||
<title>Comandos de configuração para usar mysqlnd ou libmysqlclient</title>
|
||||
<programlisting role="shell">
|
||||
@@ -352,14 +352,14 @@ $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysq
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
<simpara>
|
||||
<emphasis role="bold">Comparação de recursos de bibliotecas</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
</simpara>
|
||||
<simpara>
|
||||
É recomendado usar a biblioteca <link linkend="book.mysqlnd">mysqlnd</link>
|
||||
ao invés da biblioteca Cliente-Servidor do MySQL (libmysqlclient). Ambas
|
||||
são suportadas e estão constantemente sendo melhoradas.
|
||||
</para>
|
||||
</simpara>
|
||||
<informaltable xml:id="mysqlinfo.library.choosing.changelog">
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
|
||||
Reference in New Issue
Block a user