1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-23 23:12:09 +01:00

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

This commit is contained in:
Gina Peter Banyard
2026-01-19 03:26:36 +00:00
parent cae4c3bd78
commit 974cba2081
10 changed files with 546 additions and 550 deletions

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: f44f0a5c9022492a565f4649d083532da15a678d Maintainer: seros Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: seros Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<!-- Membership: bundled, external -->
<book xml:id="book.mysqlnd" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="book.mysqlnd">
<?phpdoc extension-membership="bundledexternal" ?>
<title>Controlador Nativo de MySQL</title>
@@ -14,27 +14,27 @@
<preface xml:id="intro.mysqlnd">
&reftitle.intro;
<para>
<simpara>
El Controlador Nativo de MySQL (MySQL Native Driver en inglés) es un sustituto para
la Biblioteca Cliente de MySQL (libmysqlclient). El Controlador Nativo de MySQL es parte de
las fuentes oficiales de PHP a partir de PHP 5.3.0.
</para>
<para>
</simpara>
<simpara>
Las extensiones de base de datos de MySQL (la extensión MySQL,
<literal>mysqli</literal> y PDO MYSQL), se comunican con el servidor
de MySQL. En el pasado, esto lo realizaba la extensión utilizando los servicios
prestados por la Biblioteca Cliente de MySQL. Las extensiones eran compiladas
con la Biblioteca Cliente de MySQL con el fin de utilizar su protocolo
cliente-servidor.
</para>
<para>
</simpara>
<simpara>
Ahora existe una alternativa con el Controlador Nativo de MySQL, ya que las extensiones
de bases de datos MySQL puede ser compiladas para utilizar el Controlador Nativo de MySQL en lugar
de la Biblioteca Cliente de MySQL.
</para>
<para>
</simpara>
<simpara>
El Controlador Nativo de MySQL está escrito en C, como una extensión de PHP.
</para>
</simpara>
</preface>
<!-- }}} -->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fa98ad518d2b960a56e44ad580907ed208ab633c Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.config">
@@ -104,19 +104,19 @@
<type>bool</type>
</term>
<listitem>
<para>
<simpara>
Activa la recolección de diferentes estadísticas del cliente a las cuales
se puede acceder mediante <function>mysqli_get_client_stats</function>,
<function>mysqli_get_connection_stats</function>,
y que también se describen
en la sección <literal>mysqlnd</literal> de la salida de la función
<function>phpinfo</function>.
</para>
<para>
</simpara>
<simpara>
Este parámetro activa todas
<link linkend="mysqlnd.stats"> las estadísticas de MySQL Native Driver
</link> excepto las relativas a la gestión de la memoria.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.collect-memory-statistics">
@@ -125,7 +125,7 @@
<type>bool</type>
</term>
<listitem>
<para>
<simpara>
Activa la recolección de diferentes estadísticas concernientes a la memoria
que pueden ser consultadas mediante
<function>mysqli_get_client_stats</function>,
@@ -133,12 +133,12 @@
y que también se muestran en
la sección <literal>mysqlnd</literal> de la salida de la función
<function>phpinfo</function>.
</para>
<para>
</simpara>
<simpara>
Este parámetro activa las estadísticas de gestión de la memoria entre
<link linkend="mysqlnd.stats">las estadísticas proporcionadas por MySQL
Native Driver</link>.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.debug">
@@ -146,107 +146,107 @@
<parameter>mysqlnd.debug</parameter> <type>string</type>
</term>
<listitem>
<para>
<simpara>
Registra las comunicaciones provenientes de cualquier extensión que utilice
<literal>mysqlnd</literal>.
</para>
<para>
</simpara>
<simpara>
El formato de esta directiva es <literal>mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]"</literal>.
</para>
<para>
</simpara>
<simpara>
Las opciones de formato de strings son las siguientes:
</para>
</simpara>
<itemizedlist>
<listitem>
<para>
<simpara>
A[,file] - Añade la traza a un fichero. Asegura que los datos son escritos
después de cada escritura cerrando y volviendo a abrir el fichero de traza (lento). Esto
ayuda a asegurar que el fichero de trazas será completo incluso si la aplicación falla.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
a[,file] - Añade la traza a un fichero.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
d - Activa la salida desde las macros DBUG_&lt;N&gt; para el estado actual.
Puede ser seguido de una lista de palabras clave que seleccionan la salida solo
para las macros DBUG con esa palabra clave (filtro). Una lista vacía de palabras clave
seleccionará todo.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
f[,functions] - Limita las acciones del depurador a una lista específica de funciones.
Una lista vacía hará que todas las funciones sean utilizadas.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
F - Marca cada línea de depuración con el nombre del fichero fuente que contiene la macro
que causa esta salida.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
i - Marca cada línea de depuración con el PID.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
L - Marca cada línea de depuración con el nombre del fichero fuente así como la línea
de la macro que causa esta salida.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
n - Marca cada línea de depuración con la profundidad actual de la función.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
o[,file] - Similar a a[,file] pero sobrescribe los ficheros en lugar de complementarlos.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
O[,file] - Similar a A[,file] pero sobrescribe los ficheros en lugar de complementarlos.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
t[,N] - Activa el trazado del flujo de control de las funciones. La profundidad máxima
se especifica mediante N, por omisión 200.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
x - Activa el perfilado.
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
m - Trazar las asignaciones y desasignaciones de memoria.
</para>
</simpara>
</listitem>
</itemizedlist>
<para>
<simpara>
Ejemplo:
</para>
</simpara>
<programlisting>
<![CDATA[
d:t:x:O,/tmp/mysqlnd.trace
]]>
</programlisting>
<note>
<para>
<simpara>
Esta característica solo está disponible para las versiones de depuración de PHP.
</para>
</simpara>
</note>
<para/>
<simpara/>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.log-mask">
@@ -255,20 +255,20 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
Define qué consulta será historizada. Por omisión, vale 0, lo que significa
que los logs están desactivados. Conviene definir esta opción utilizando
un entero, y no una constante PHP. Por ejemplo, un valor de
48 (16 + 32) historizará las consultas lentas que utilicen 'no good index'
(SERVER_QUERY_NO_GOOD_INDEX_USED = 16) o ningún índice en absoluto (SERVER_QUERY_NO_INDEX_USED = 32).
Un valor de 2043 (1 + 2 + 8 + ... + 1024) historizará todo tipo de consultas lentas.
</para>
<para>
</simpara>
<simpara>
Los tipos son los siguientes: SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, y SERVER_QUERY_WAS_SLOW=1024.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.mempool-default-size">
@@ -277,10 +277,10 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
Tamaño por omisión de la cola de memoria mysqlnd, utilizada por los juegos
de resultados.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-read-timeout">
@@ -289,7 +289,7 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
<literal>mysqlnd</literal> y la MySQL Client Library,
<literal>libmysqlclient</literal> utilizan API de red diferentes.
<literal>mysqlnd</literal> utiliza los flujos PHP, mientras que
@@ -317,7 +317,7 @@ d:t:x:O,/tmp/mysqlnd.trace
PHP, por ejemplo <literal>MYSQL_OPT_READ_TIMEOUT</literal> se dice funcional
únicamente con conexiones TCP/IP y, antes de MySQL 5.1.2, solo en Windows.
Los flujos PHP, ellos, no tienen esta limitación. Consulte la documentación de los flujos en caso de duda.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-cmd-buffer-size">
@@ -326,7 +326,7 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
<literal>mysqlnd</literal> asigna un buffer interno para la red de un tamaño
de <literal>mysqlnd.net_cmd_buffer_size</literal> (en
<filename>php.ini</filename>) bytes para cada conexión. Si una orden del
@@ -335,19 +335,19 @@ d:t:x:O,/tmp/mysqlnd.trace
el buffer, <literal>mysqlnd</literal> aumentará aquel a la tamaño requerido.
Cada vez que el buffer es aumentado para una conexión,
<literal>command_buffer_too_small</literal> será incrementado en uno.
</para>
<para>
</simpara>
<simpara>
Si <literal>mysqlnd</literal> debe aumentar el buffer más allá de su tamaño inicial de
<literal>mysqlnd.net_cmd_buffer_size</literal> bytes para casi todas las conexiones,
entonces debería aumentar este tamaño por omisión para evitar las reasignaciones.
</para>
<para>
</simpara>
<simpara>
El tamaño por omisión del buffer es de 4096 bytes.
</para>
<para>
</simpara>
<simpara>
El valor también puede ser cambiado mediante <literal>mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size)</literal>.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-read-buffer-size">
@@ -356,7 +356,7 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
Tamaño máximo del segmento en lectura al leer el cuerpo de un paquete de orden MySQL. El protocolo servidor de MySQL encapsula todas
sus órdenes en paquetes. Los paquetes consisten en un encabezado corto
seguido de un cuerpo que contiene las informaciones. El tamaño del cuerpo está codificado en
@@ -366,11 +366,11 @@ d:t:x:O,/tmp/mysqlnd.trace
<literal>mysqlnd.net_read_buffer_size</literal> bytes,
<literal>mysqlnd</literal> debe entonces llamar a <literal>read()</literal>
varias veces.
</para>
<para>
</simpara>
<simpara>
El valor también puede ser cambiado mediante <literal>mysqli_options(link,
MYSQLI_OPT_NET_READ_BUFFER_SIZE, size)</literal>.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.sha256-server-public-key">
@@ -379,18 +379,18 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>string</type>
</term>
<listitem>
<para>
<simpara>
Relacionado con el plugin de autenticación SHA-256.
Fichero que contiene la clave pública RSA en el servidor MySQL.
</para>
<para>
</simpara>
<simpara>
Los clientes pueden omitir definir una clave pública RSA y especificar
la clave mediante la directiva de configuración PHP, o bien, definir la clave
en el momento de la ejecución utilizando la función <function>mysqli_options</function>.
Si ningún fichero de clave pública RSA es proporcionado por el cliente, entonces la clave
será intercambiada conforme al procedimiento del plugin de autenticación estándar
SHA-256.
</para>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.trace-alloc">
@@ -399,8 +399,8 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>string</type>
</term>
<listitem>
<para>
</para>
<simpara>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.fetch_data_copy">
@@ -409,19 +409,19 @@ d:t:x:O,/tmp/mysqlnd.trace
<type>int</type>
</term>
<listitem>
<para>
<simpara>
Obliga a copiar los juegos de resultados desde los buffers internos hacia
variables PHP en lugar de utilizar el mecanismo por omisión de referencia
y copia al escribir. Consulte las,
<link linkend="mysqlnd.memory">notas de implementación sobre la gestión de memoria</link>
para más detalles.
</para>
<para>
</simpara>
<simpara>
Copiar los juegos de resultados en lugar de tener variables PHP que los referencian permite liberar más pronto la memoria ocupada por las variables PHP. Dependiendo del código de la API cliente, las consultas actuales y el tamaño de sus juegos de resultados, esto puede reducir la huella de memoria de mysqlnd.
</para>
<para>
</simpara>
<simpara>
No activar con PDO_MySQL. PDO_MySQL no soporta aún este modo.
</para>
</simpara>
<note>
<simpara>Eliminado a partir de PHP 8.1.0</simpara>
</note>

View File

@@ -1,29 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: b72a6273c1f19ebdfc6a784ba66fd141c50cdc88 Maintainer: regiemix Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: regiemix Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysqlnd.incompatibilities" xmlns="http://docbook.org/ns/docbook">
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlnd.incompatibilities">
<title>Incompatibilidades</title>
<para>
<simpara>
El Driver MySQL Native es compatible en muchos casos con la librería MySQL Client
(<literal>libmysql</literal>). Esta sección documenta las incompatibilidades
entre estas librerías.
</para>
</simpara>
<itemizedlist>
<listitem>
<para>
<simpara>
Los valores de tipo <literal>bit</literal> son devueltos como strings binarios
(p.e. "\0" o "\x1F") con <literal>libmysql</literal> y como strings
decimales (p.e. "0" o "31") con <literal>mysqlnd</literal>. Si se desea que el código
sea compatible con ambas librerías entonces siempre se deberá devolver campos de tipo bit como
números desde MySQL con una consulta como la siguiente:
<literal>SELECT bit + 0 FROM table</literal>.
</para>
</simpara>
</listitem>
</itemizedlist>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fa98ad518d2b960a56e44ad580907ed208ab633c Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.install">
<title>Instalación</title>
<para>
<simpara>
<emphasis role="bold">Instalación bajo Unix</emphasis>
</para>
</simpara>
<para>
<simpara>
Para utilizar el controlador nativo MySQL,
PHP debe ser compilado especificando explícitamente que las extensiones de base de
datos MySQL deben ser compiladas en relación con él. Esto se realiza mediante las opciones
de configuración anteriores a la compilación de PHP en sí.
</para>
</simpara>
<para>
<simpara>
Por ejemplo, para compilar la extensión MySQL, <literal>mysqli</literal>
y PDO MySQL utilizando el controlador nativo MySQL, la siguiente
orden debe ser ejecutada:
</para>
</simpara>
<programlisting role="shell">
<![CDATA[
@@ -32,25 +32,25 @@
]]>
</programlisting>
<para>
<simpara>
<emphasis role="bold">Instalación bajo Windows</emphasis>
</para>
</simpara>
<para>
<simpara>
En las distribuciones oficiales de PHP para Windows, el
controlador nativo MySQL está activado por defecto y no se requiere configuración
adicional para su uso. Todas las extensiones de base de datos MySQL lo utilizarán entonces.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Soporte del plugin de autenticación SHA-256</emphasis>
</para>
</simpara>
<para>
<simpara>
El driver nativo MySQL requiere la carga de la funcionalidad OpenSSL de PHP,
y la activación de la conexión a MySQL mediante cuentas que utilizan
el plugin de autenticación MySQL SHA-256. Por ejemplo, PHP podría ser configurado
utilizando la siguiente orden:
</para>
</simpara>
<programlisting role="shell">
<![CDATA[
@@ -61,14 +61,14 @@
[otras opciones]
]]>
</programlisting>
<para>
<simpara>
En Autotools, el soporte SSL extendido en <literal>mysqlnd</literal> es
activado implícitamente durante la compilación con la extensión <literal>openssl</literal>
utilizando la opción de configuración <option role="configure">--with-openssl</option>.
Durante la compilación sin la extensión <literal>openssl</literal>, la opción
de configuración <option role="configure">--with-mysqlnd-ssl</option> puede ser
utilizada para activar explícitamente el soporte SSL extendido.
</para>
</simpara>
<simplesect role="changelog">
&reftitle.changelog;

View File

@@ -1,30 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e016fe67d1f58dc26592e50a244584fcfcf2604d Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysqlnd.memory" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.memory">
<title>Gestión de la memoria</title>
<para>
<simpara>
<emphasis role="bold">Introducción</emphasis>
</para>
<para>
</simpara>
<simpara>
El driver nativo MySQL gestiona la memoria de forma diferente a la biblioteca
cliente MySQL. Las bibliotecas difieren en la forma en que la memoria
es asignada y liberada, en la forma en que la memoria es asignada por
fragmentos durante la lectura de los resultados desde MySQL, qué opciones
de depuración y desarrollo existen, y cómo los resultados leídos
desde MySQL son vinculados a las variables de usuario PHP.
</para>
<para>
</simpara>
<simpara>
Las notas siguientes son una introducción y un resumen destinados a los usuarios
interesados en comprender el driver nativo MySQL desde el punto de vista
del código C.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Funciones utilizadas en la gestión de memoria</emphasis>
</para>
<para>
</simpara>
<simpara>
Todas las asignaciones y desasignaciones se realizan utilizando las funciones
de gestión de memoria de PHP. Sin embargo, el consumo de memoria
de mysqlnd puede ser monitoreado utilizando llamadas a APIs de PHP, como
@@ -37,8 +36,8 @@
difícil. La biblioteca cliente MySQL llama directamente al gestor de memoria
del sistema operativo, y por lo tanto, los efectos pueden ser vistos inmediatamente
a nivel del sistema operativo.
</para>
<para>
</simpara>
<simpara>
Todas las limitaciones de memoria realizadas por PHP afectan también al driver
nativo MySQL. Esto puede causar errores de excedente de memoria al recuperar
juegos de resultados demasiado grandes, excediendo el tamaño de la memoria restante
@@ -48,19 +47,19 @@
la huella de memoria del proceso PHP puede aumentar y superar el límite de memoria
impuesto por PHP. Además, los scripts PHP pueden analizar juegos de resultados más grandes,
asignando así más memoria para el juego de resultados de la que el control del motor PHP permite.
</para>
<para>
</simpara>
<simpara>
Las funciones de gestión de memoria de PHP son llamadas por el driver nativo MySQL
a través de un gestor ligero. Entre otras cosas, este gestor facilita el depuración.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Gestión de los juegos de resultados</emphasis>
</para>
<para>
</simpara>
<simpara>
Los diferentes servidores MySQL y las diferentes APIs de clientes se diferencian
según el <link linkend="mysqli.quickstart.statements">buffering o no</link> de los juegos de resultados. Los juegos de resultados que no son bufferizados son transferidos línea por línea desde MySQL hacia el cliente, y el cliente recorrerá los resultados. Los resultados que son bufferizados son recuperados en su totalidad por la biblioteca cliente antes de pasarlos al cliente.
</para>
<para>
</simpara>
<simpara>
El driver nativo MySQL utiliza flujos PHP para la comunicación en red con
el servidor MySQL. Los resultados enviados por MySQL son recuperados desde la memoria
buffer de los flujos de red PHP hacia la memoria buffer de resultados de mysqlnd.
@@ -68,8 +67,8 @@
los resultados son puestos a disposición del script PHP. La transferencia final desde la
memoria buffer de resultados hacia las variables PHP impacta el consumo de memoria
y esto se vuelve muy visible al utilizar juegos de resultados bufferizados.
</para>
<para>
</simpara>
<simpara>
Por omisión, el driver nativo MySQL intenta no conservar en memoria
dos veces los resultados bufferizados. Los resultados son conservados
una sola vez en la memoria buffer interna de resultados, así como en sus
@@ -86,8 +85,8 @@
La operación de copia-al-escritura también debe ser realizada si el usuario
lee un juego de resultados en las variables PHP y libera un juego de resultado antes
de que las variables sean eliminadas.
</para>
<para>
</simpara>
<simpara>
En general, este mecanismo funciona bien para los scripts que leen
un juego de resultados una sola vez, y no modifican las variables que contienen
los resultados. Su principal desventaja es la sobrecarga de memoria causada por
@@ -102,8 +101,8 @@
libera el juego de resultados explícitamente, o si el driver lo libera implícitamente,
haciendo que la memoria sea utilizada más tiempo del necesario.
Las estadísticas también pueden ayudar a ver las operaciones de copia-al-escritura.
</para>
<para>
</simpara>
<simpara>
Un script PHP que lee muchas pequeñas líneas de un juego de resultados bufferizado
utilizando líneas de código como <literal>while ($row = $res-&gt;fetch_assoc()) { ... }</literal>
puede optimizar el consumo de memoria solicitando una copia en lugar de
@@ -114,24 +113,24 @@
la optimización del uso de memoria puede mejorar el rendimiento del sistema
en general, aunque para un script individual, el enfoque de la copia puede ser más lento
debido a las operaciones adicionales de asignación y copia de memoria.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Supervisión y depuración</emphasis>
</para>
<para>
</simpara>
<simpara>
Existen varias formas de supervisar el uso de memoria del driver nativo MySQL.
Si el objetivo es obtener una vista rápida de alto nivel, o verificar la eficiencia
de memoria de los scripts PHP, entonces revise las <link linkend="mysqlnd.stats">estadísticas</link>
recopiladas por la biblioteca. Estas le permiten, por ejemplo,
ver las consultas SQL que generan más resultados de los analizados por un script PHP.
</para>
<para>
</simpara>
<simpara>
El rastreo de <link linkend="ini.mysqlnd.debug">depuración</link> en el historial
puede ser configurado para registrar las llamadas al gestor de memoria. Esto puede ayudar
a ver cuándo la memoria es asignada o liberada. Sin embargo, el tamaño de los
fragmentos de memoria solicitados puede no estar listado.
</para>
<para>
</simpara>
<simpara>
Las versiones recientes del driver nativo MySQL intentan emular situaciones
de excedente de memoria aleatorio. Esto es útil únicamente para los desarrolladores C
de la biblioteca, o para los desarrolladores del <link linkend="mysqlnd.plugin">complemento</link>
@@ -139,7 +138,7 @@
así como para obtener más detalles sobre este mecanismo.
Esta funcionalidad se considera privada, y puede ser modificada en cualquier momento
sin previo aviso.
</para>
</simpara>
</chapter>
<!-- Keep this comment at the end of the file

View File

@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 35687156f47c58e0cbc5511a9e95ab108de8faf7 Maintainer: jpberdejo Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: jpberdejo Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<chapter xml:id="mysqlnd.notes" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.notes">
<title>Notas</title>
<para>
<simpara>
En esta sección se ofrece una colección de diversas notas sobre el uso del
Controlador Nativo de MySQL.
</para>
</simpara>
<itemizedlist>
<listitem><para>Utilizar <literal>mysqlnd</literal> significa que se están utilizando flujos
<listitem><simpara>Utilizar <literal>mysqlnd</literal> significa que se están utilizando flujos
PHP para la conectividad subyacente. Para <literal>mysqlnd</literal>, se debe consultar
la documentación de flujos de PHP (<xref linkend="book.stream"/>)
para detalles como la configuración del tiempo de espera, y no la documentación para la
Biblioteca Cliente de MySQL.</para></listitem>
Biblioteca Cliente de MySQL.</simpara></listitem>
</itemizedlist>
</chapter>
<!-- Keep this comment at the end of the file

View File

@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a714378ed87cdbdbde3b10ded183e8df7b243cb4 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysqlnd.overview" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.overview">
<title>Introducción</title>
<para>
<simpara>
<emphasis role="bold">Lo que no es</emphasis>
</para>
<para>
</simpara>
<simpara>
Aunque el driver nativo de MySQL está escrito como una extensión PHP, es importante
señalar que no proporciona una nueva API al programador PHP. Las API para programadores
son proporcionadas por la extensión MySQL, <literal>mysqli</literal> y PDO
MySQL. Estas extensiones pueden ahora utilizar los servicios del driver nativo MySQL para comunicarse
con el servidor MySQL. Por lo tanto, el driver nativo MySQL no debe ser considerado como una API.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">¿Por qué utilizarlo?</emphasis>
</para>
<para>
</simpara>
<simpara>
Utilizar el driver nativo de MySQL ofrece numerosas ventajas en comparación con
la biblioteca cliente de MySQL.
</para>
<para>
</simpara>
<simpara>
La antigua biblioteca cliente de MySQL fue escrita por MySQL AB (ahora
parte de Oracle Corporation) y, por lo tanto, fue publicada bajo la licencia MySQL,
lo que tuvo como consecuencia la desactivación del soporte de MySQL por defecto
en PHP. Dado que el driver nativo de MySQL fue desarrollado como parte integral
del proyecto PHP, se publica bajo la licencia PHP, lo que resuelve los problemas
de licencia que existían en el pasado.
</para>
<para>
</simpara>
<simpara>
Además, anteriormente, era necesario compilar las extensiones de base de datos
MySQL en relación con una copia de la biblioteca cliente de MySQL, lo que significaba que
se debía tener instalado MySQL en la máquina donde se compilaba PHP a partir de los fuentes. Por lo tanto,
@@ -37,8 +37,8 @@
al inicio, los cuales debían estar obligatoriamente instalados en el sistema. Con el driver nativo de MySQL, esto ya no es necesario
ya que está incluido en la distribución estándar. Por lo tanto, ya no será necesario tener instalado MySQL para compilar PHP o ejecutar aplicaciones PHP
que hagan uso de una base de datos.
</para>
<para>
</simpara>
<simpara>
Dado que el driver nativo de MySQL está escrito como una extensión PHP, está íntimamente
ligado al núcleo de PHP. Esto implica una mejor eficiencia, especialmente en lo que respecta
al uso de la memoria, ya que el driver utiliza la asignación de memoria de PHP y, por
@@ -46,72 +46,72 @@
un rendimiento igual o mejor que con la biblioteca cliente de MySQL, ya que el uso
de la memoria es mucho más eficiente. El hecho de que, al utilizar la biblioteca cliente
de MySQL, cada registro se almacene dos veces en memoria, mientras que el cliente nativo de MySQL solo lo almacena una vez, es un buen ejemplo de una buena gestión de la memoria.
</para>
</simpara>
<note>
<title>Supervisión del uso de memoria</title>
<para>
<simpara>
Debido a que el driver nativo de MySQL utiliza el sistema de gestión de memoria
de PHP, su uso de memoria puede ser supervisado con la función
<function>memory_get_usage</function>. Esto no es posible
con la biblioteca libmysqlclient ya que utiliza la función C malloc() en su lugar.
</para>
</simpara>
</note>
<para>
<simpara>
<emphasis role="bold">Funcionalidades especiales</emphasis>
</para>
<para>
</simpara>
<simpara>
El driver nativo de MySQL también proporciona algunas funcionalidades especiales no
disponibles con la biblioteca cliente de MySQL, listadas a continuación:
</para>
</simpara>
<itemizedlist>
<listitem>
<para>
<simpara>
Conexiones persistentes mejoradas
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
La función especial <function>mysqli_fetch_all</function>
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
Llamadas a las estadísticas de rendimiento:
<function>mysqli_get_client_stats</function>,
<function>mysqli_get_connection_stats</function>
</para>
</simpara>
</listitem>
</itemizedlist>
<para>
<simpara>
Las estadísticas de rendimiento pueden ser muy útiles para identificar
cuellos de botella de rendimiento.
</para>
<para>
</simpara>
<simpara>
El driver nativo de MySQL también proporciona conexiones persistentes al utilizarlo
con la extensión <literal>mysqli</literal>.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Soporte de SSL</emphasis>
</para>
<para>
</simpara>
<simpara>
El driver nativo de MySQL (MySQL Native Driver) soporta SSL.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Soporte del protocolo comprimido</emphasis>
</para>
<para>
</simpara>
<simpara>
El driver nativo de MySQL soporta el protocolo cliente/servidor MySQL comprimido.
La extensión <literal>ext/mysqli</literal>, si está configurada para utilizar el driver
nativo de MySQL, también puede beneficiarse de esta funcionalidad.
Es importante señalar que <literal>PDO_MYSQL</literal> no soporta
<emphasis>EN ABSOLUTO</emphasis> la compresión cuando se utiliza con mysqlnd.
</para>
<para>
</simpara>
<simpara>
<emphasis role="bold">Soporte de pipes nombrados</emphasis>
</para>
<para>
</simpara>
<simpara>
Los pipes nombrados pueden ser utilizados para conectarse bajo Windows.
</para>
</simpara>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,39 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d617b26e4b9db6f2a4a39e5bd45bb09e2dc91100 Maintainer: jpberdejo Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: jpberdejo Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<chapter xml:id="mysqlnd.persist" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.persist">
<title>Conexiones persistentes</title>
<para>
<simpara>
<emphasis role="bold">Utilizar conexiones persistentes</emphasis>
</para>
<para>
</simpara>
<simpara>
Si <literal>mysqli</literal> se utiliza con <literal>mysqlnd</literal>,
cuando se crea una conexión persistente, se genera una llamada
<literal>COM_CHANGE_USER</literal>
(<literal>mysql_change_user()</literal>) en el servidor. Esto
asegura que la re-autenticación de la conexión se lleva a cabo.
</para>
<para>
</simpara>
<simpara>
Dado que hay una cierta sobrecarga asociada con la llamada
<literal>COM_CHANGE_USER</literal>, es posible apagar
esto en el tiempo de compilado. La reutilización de una conexión persistente entonces
generará una llamada <literal>COM_PING</literal> (<literal>mysql_ping</literal>)
para simplemente probar si la conexión es reusable.
</para>
<para>
</simpara>
<simpara>
La generación de <literal>COM_CHANGE_USER</literal> se puede apagar
con el marcador de compilación
<literal>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</literal>. Por ejemplo:
</para>
</simpara>
<programlisting>
<![CDATA[
shell# CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT" ./configure --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --enable-debug && make clean && make -j6
]]>
</programlisting>
<para>
<simpara>
O, alternativamente:
</para>
</simpara>
<programlisting>
<![CDATA[
shell# export CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT"
@@ -42,12 +42,12 @@ shell# make clean
shell# make
]]>
</programlisting>
<para>
<simpara>
Observe que solamente <literal>mysqli</literal> sobre <literal>mysqlnd</literal>
utiliza <literal>COM_CHANGE_USER</literal>. Otra combinación de
extensión-controlador emplea <literal>COM_PING</literal> en el uso inicial de una
conexión persistente.
</para>
</simpara>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a0eca86848c615986f393020ef68a1f69d33e0f2 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<chapter xml:id="mysqlnd.stats" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="mysqlnd.stats">
<title>Estadísticas</title>
<para>
@@ -1508,30 +1508,30 @@ $link->real_connect(/* ... */);
<title>Ejemplos de uso</title>
<itemizedlist>
<listitem>
<para>
<simpara>
Verificar si PHP envía ciertos comandos a MySQL, por ejemplo,
verificar si un cliente envía <literal>COM_PROCESS_KILL</literal>
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
Calcular el número promedio de ejecuciones de comandos preparados
comparando <literal>COM_EXECUTE</literal> con
<literal>COM_PREPARE</literal>
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
Verificar si PHP ha ejecutado declaraciones SQL no preparadas
verificando si <literal>COM_QUERY</literal> es cero
</para>
</simpara>
</listitem>
<listitem>
<para>
<simpara>
Identificar los scripts PHP que ejecutan un número excesivo de declaraciones SQL
verificando <literal>COM_QUERY</literal> y
<literal>COM_EXECUTE</literal>
</para>
</simpara>
</listitem>
</itemizedlist>
</example>