mysqlinfo : fix XML by converting para to simpara tags via script

This commit is contained in:
Gina Peter Banyard
2026-01-19 03:27:56 +00:00
parent 43c7a8412b
commit d2f3674be4
2 changed files with 81 additions and 81 deletions

View File

@@ -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>

View File

@@ -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>