docs(ru): Review

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@348507 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
sergey
2019-12-13 19:39:18 +00:00
parent d9d47db2b5
commit bbae3e95e5
10 changed files with 392 additions and 393 deletions

View File

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<!-- $Revision$ -->
<refentry xml:id="function.mysqli-rpl-probe" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysqli_rpl_probe</refname>
<refpurpose>RPL зонд</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>mysqli_rpl_probe</methodname>
<methodparam><type>mysqli</type><parameter>link</parameter></methodparam>
</methodsynopsis>
&warn.undocumented.func;
&warn.deprecated.function.removed-5-3-0;
</refsect1>
</refentry>
<!-- 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
-->
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: tmn Status: ready -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<refentry xml:id="function.mysqli-rpl-probe" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysqli_rpl_probe</refname>
<refpurpose>RPL зонд</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>mysqli_rpl_probe</methodname>
<methodparam><type>mysqli</type><parameter>link</parameter></methodparam>
</methodsynopsis>
&warn.undocumented.func;
&warn.deprecated.function.removed-5-3-0;
</refsect1>
</refentry>
<!-- 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
-->

View File

@ -1,141 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5ad5bd900952374827ca04085c8bdb7d8466d6c8 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<!-- $Revision$ -->
<refentry xml:id="mysqli.sqlstate" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mysqli::$sqlstate</refname>
<refname>mysqli_sqlstate</refname>
<refpurpose>
Возвращает код состояния SQLSTATE последней MySQL операции
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<fieldsynopsis><type>string</type><varname linkend="mysqli.sqlstate">mysqli->sqlstate</varname></fieldsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>string</type><methodname>mysqli_sqlstate</methodname>
<methodparam><type>mysqli</type><parameter>link</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает строку с SQLSTATE кодом последней ошибки. Этот код состоит из пяти
символов. <literal>'00000'</literal> означает отсутствие ошибок. Эти коды
определены в стандарте ANSI, а также в ODBC. Посмотреть список возможных
значений можно на странице
<link xlink:href="&url.mysql.docs.error;">&url.mysql.docs.error;</link>.
</para>
<note>
<para>
Следует заметить, что еще не все MySQL ошибки имеют отражение в SQLSTATE кодах.
Для подобных ошибок используется код <literal>HY000</literal> (общая ошибка).
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
&mysqli.link.description;
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку с SQLSTATE кодом последней ошибки. Этот код состоит из пяти
символов. <literal>'00000'</literal> означает отсутствие ошибок.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Пример использования <varname>$mysqli->sqlstate</varname></title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
/* таблица City уже существует, так что мы должны получить ошибку */
if (!$mysqli->query("CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
printf("Ошибка - SQLSTATE %s.\n", $mysqli->sqlstate);
}
$mysqli->close();
?>
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
/* таблица City уже существует, так что мы должны получить ошибку */
if (!mysqli_query($link, "CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
printf("Ошибка - SQLSTATE %s.\n", mysqli_sqlstate($link));
}
mysqli_close($link);
?>
]]>
</programlisting>
&examples.outputs;
<screen>
<![CDATA[
Ошибка - SQLSTATE 42S01.
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mysqli_errno</function></member>
<member><function>mysqli_error</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5ad5bd900952374827ca04085c8bdb7d8466d6c8 Maintainer: tmn Status: ready -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<refentry xml:id="mysqli.sqlstate" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mysqli::$sqlstate</refname>
<refname>mysqli_sqlstate</refname>
<refpurpose>
Возвращает код состояния SQLSTATE последней MySQL операции
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<fieldsynopsis><type>string</type><varname linkend="mysqli.sqlstate">mysqli->sqlstate</varname></fieldsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>string</type><methodname>mysqli_sqlstate</methodname>
<methodparam><type>mysqli</type><parameter>link</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает строку с SQLSTATE кодом последней ошибки. Этот код состоит из пяти
символов. <literal>'00000'</literal> означает отсутствие ошибок. Эти коды
определены в стандарте ANSI, а также в ODBC. Посмотреть список возможных
значений можно на странице
<link xlink:href="&url.mysql.docs.error;">&url.mysql.docs.error;</link>.
</para>
<note>
<para>
Следует заметить, что еще не все MySQL ошибки имеют отражение в SQLSTATE кодах.
Для подобных ошибок используется код <literal>HY000</literal> (общая ошибка).
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
&mysqli.link.description;
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку с SQLSTATE кодом последней ошибки. Этот код состоит из пяти
символов. <literal>'00000'</literal> означает отсутствие ошибок.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Пример использования <varname>$mysqli->sqlstate</varname></title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
/* таблица City уже существует, так что мы должны получить ошибку */
if (!$mysqli->query("CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
printf("Ошибка - SQLSTATE %s.\n", $mysqli->sqlstate);
}
$mysqli->close();
?>
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
/* таблица City уже существует, так что мы должны получить ошибку */
if (!mysqli_query($link, "CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
printf("Ошибка - SQLSTATE %s.\n", mysqli_sqlstate($link));
}
mysqli_close($link);
?>
]]>
</programlisting>
&examples.outputs;
<screen>
<![CDATA[
Ошибка - SQLSTATE 42S01.
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mysqli_errno</function></member>
<member><function>mysqli_error</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f44f0a5c9022492a565f4649d083532da15a678d Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<!-- Membership: bundled, external -->
<book xml:id="book.mysqlnd" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@ -20,19 +20,19 @@
начиная с PHP 5.3.0.
</para>
<para>
Расширения баз данных MySQL <literal>mysqli</literal> и PDO MYSQL
соединяются с сервером MySQL. В прошлом это делалось с помощью расширения,
Модули баз данных MySQL <literal>mysqli</literal> и PDO MYSQL
соединяются с сервером MySQL. В прошлом это делалось с помощью модуля,
использующего сервисы, которые предоставляет клиентская библиотека MySQL.
Такие расширения компилировались с клиентской библиотекой MySQL
Такие модули компилировались с клиентской библиотекой MySQL
для того, чтобы использовать собственный клиент-серверный протокол.
</para>
<para>
С появлением MySQL Native Driver появилась альтернатива, так как
расширения баз данных могут компилироваться для использования MySQL Native Driver
модули баз данных могут компилироваться для использования MySQL Native Driver
вместо клиентской библиотеки MySQL.
</para>
<para>
MySQL Native Driver написан на C в виде расширения PHP.
MySQL Native Driver написан на C в виде модуля PHP.
</para>
</preface>

View File

@ -1,101 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4aeacf866911bfa28b5a70ad4a4d75b0b0a6202f Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<chapter xml:id="mysqlnd.install" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Установка</title>
<para>
<emphasis role="bold">&Changelog;</emphasis>
</para>
<table>
<title>&Changelog;</title>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>
Был добавлен встроенный драйвер MySQL, поддерживающий все MySQL-расширения
(то есть mysql, mysqli и PDO_MYSQL). Указание параметра
<literal>mysqlnd</literal> в соответствующий параметр конфигурации
включает эту поддержку.
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
Встроенный драйвер MySQL теперь по умолчанию работает для всех
MySQL-расширений (то есть mysql, mysqli и PDO_MYSQL). Указание
параметра <literal>mysqlnd</literal> при конфигурации теперь необязательно.
</entry>
</row>
<row>
<entry>5.5.0</entry>
<entry>
Добавлена поддержка плагина аутентификации SHA-256.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
<emphasis role="bold">Установка в Unix</emphasis>
</para>
<para>
Расширения для работы с MySQL должны быть сконфигурированы для использования
клиентской библиотеки MySQL. Для работы встроенного драйвере MySQL
требуется собрать PHP, указав, что расширения для работы с MySQL должны
быть скомпилированы с поддержкой встроенного драйвера MySQL. Это делается
с помощью параметров конфигурации перед сборкой PHP из исходного кода.
</para>
<para>
Например, чтобы собрать расширения MySQL <literal>mysqli</literal>
и PDO MYSQL, использующие встроенный драйвер MySQL, должна быть
выполнена следующая команда:
</para>
<programlisting role="shell">
<title>Установка</title>
<para>
<emphasis role="bold">&Changelog;</emphasis>
</para>
<table>
<title>&Changelog;</title>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>
Был добавлен встроенный драйвер MySQL, поддерживающий все MySQL-модули
(то есть mysql, mysqli и PDO_MYSQL). Указание параметра
<literal>mysqlnd</literal> в соответствующий параметр конфигурации
включает эту поддержку.
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
Встроенный драйвер MySQL теперь по умолчанию работает для всех
MySQL-модулей (то есть mysql, mysqli и PDO_MYSQL). Указание
параметра <literal>mysqlnd</literal> при конфигурации теперь необязательно.
</entry>
</row>
<row>
<entry>5.5.0</entry>
<entry>
Добавлена поддержка плагина аутентификации SHA-256.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
<emphasis role="bold">Установка в Unix</emphasis>
</para>
<para>
Модули для работы с MySQL должны быть сконфигурированы для использования
клиентской библиотеки MySQL. Для работы встроенного драйвера MySQL
требуется собрать PHP, указав, что модули для работы с MySQL должны
быть скомпилированы с поддержкой встроенного драйвера MySQL. Это делается
с помощью параметров конфигурации перед сборкой PHP из исходного кода.
</para>
<para>
Например, чтобы собрать модули MySQL <literal>mysqli</literal>
и PDO MYSQL, использующие встроенный драйвер MySQL, должна быть
выполнена следующая команда:
</para>
<programlisting role="shell">
<![CDATA[
./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
[other options]
]]>
</programlisting>
<para>
<emphasis role="bold">Установка в Windows</emphasis>
</para>
<para>
В официальных Windows-дистрибутивах PHP 5.3 и выше встроенный драйвер
MySQl включен по умолчанию, так что никаких дополнительных настроек
для его использования не требуется. В этом случае все расширения для
работы с MySQL будут использовать встроенный драйвер MySQL.
</para>
<para>
<emphasis role="bold">Поддержка плагина аутентификации SHA-256</emphasis>
</para>
<para>
Для встроенного драйвера MySQL требуется подключить и включить OpenSSL функционал PHP,
чтобы подключаться к MySQL через аккаунты использующие плагин аутентификации MySQL SHA-256.
Например можно настроить PHP следующим образом:
</para>
<programlisting role="shell">
</programlisting>
<para>
<emphasis role="bold">Установка в Windows</emphasis>
</para>
<para>
В официальных Windows-дистрибутивах PHP 5.3 и выше встроенный драйвер
MySQL включен по умолчанию, так что никаких дополнительных настроек
для его использования не требуется. В этом случае все модули для
работы с MySQL будут использовать встроенный драйвер MySQL.
</para>
<para>
<emphasis role="bold">Поддержка плагина аутентификации SHA-256</emphasis>
</para>
<para>
Для встроенного драйвера MySQL требуется подключить и включить OpenSSL функционал PHP,
чтобы подключаться к MySQL через аккаунты, использующие плагин аутентификации MySQL SHA-256.
Например, можно настроить PHP следующим образом:
</para>
<programlisting role="shell">
<![CDATA[
./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
@ -103,8 +103,8 @@
--with-openssl
[other options]
]]>
</programlisting>
</programlisting>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 8b6d169424ff189bb563ef4c3f35f8adff3f42c5 Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<chapter xml:id="mysqlnd.notes" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Записки</title>
<title>Замечания</title>
<para>
Этот раздел содержит набор различных записок по поводу использования
Этот раздел содержит набор различных замечаний по поводу использования
встроенного драйвера MySQL.
</para>
<itemizedlist>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: cd09fab47b40563cb8b2316d817efc973d991713 Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<chapter xml:id="mysqlnd.overview" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Обзор</title>
<para>
<emphasis role="bold">Чем он не является</emphasis>
</para>
<para>
Хотя встроенный драйвер MySQL написан как расширение PHP, важно понимать,
Хотя встроенный драйвер MySQL написан как модуль PHP, важно понимать,
что он не предоставляет программисту PHP нового API. API к базе
данных MySQL для программиста предоставляются расширениями MySQL,
<literal>mysqli</literal> и PDO MYSQL. Эти расширения могут использовать
данных MySQL для программиста предоставляются модулями MySQL,
<literal>mysqli</literal> и PDO MYSQL. Эти модули могут использовать
возможности встроенного драйвера MySQL для общения с сервером MySQL.
Таким образом, вы не должны думать о встроенном драйвере MySQL как об API.
</para>
@ -31,10 +31,10 @@
лицензированием, бывшие проблемными в прошлом.
</para>
<para>
Также, в прошлом вам требовалось собирать расширения, работающие с базой
Также, в прошлом вам требовалось собирать модули, работающие с базой
данных MySQL, рядом с клиентской библиотекой MySQL. Обычно это означало,
что на машине, на которой вы разрабатывали PHP-код, требовался установленный
MySQL. К тому же, когда PHP-приложение работало, расширения, работающие
MySQL. К тому же, когда PHP-приложение работало, модули, работающие
с MySQL, могли обращаться к клиентской библиотеке MySQL во время работы,
так что ее файл должен был быть установлен в вашей системе.
Со встроенным драйвером MySQL эта проблема исчезла, поскольку он является
@ -43,7 +43,7 @@
с базой данных PHP-приложения.
</para>
<para>
Поскольку встроенный драйвер MySQL написан как расширение PHP, он
Поскольку встроенный драйвер MySQL написан как модуль PHP, он
тесно связан с работой PHP. Это приводит к приросту эффективности, особенно
в плане использования оперативной памяти, поскольку драйвер использует
систему управления памятью PHP. Он также поддерживает настройки лимита
@ -59,7 +59,7 @@
<para>
Так как встроенный драйвер MySQL использует систему контроля памяти PHP,
используемая им память может быть отслежена с помощью функции <function>memory_get_usage</function>.
Это нельзя сделать с libmysqlclient, так как он использует функцию языка Си malloc().
Это нельзя сделать с помощью libmysqlclient, так как он использует функцию языка Си malloc().
</para>
</note>
<para>
@ -96,7 +96,7 @@
</para>
<para>
Встроенный драйвер MySQL также поддерживает постоянные соединения
при использовании расширения <literal>mysqli</literal>.
при использовании модуля <literal>mysqli</literal>.
</para>
<para>
<emphasis role="bold">Поддержка SSL</emphasis>
@ -110,7 +110,7 @@
<para>
Начиная с PHP 5.3.2, встроенный драйвер MySQL поддерживает клиент-серверный
протокол с использованием сжатия. Этой поддержки нет в версиях 5.3.0 и 5.3.1.
Расширения, например <literal>ext/mysql</literal> или <literal>ext/mysqli</literal>,
Модули, например, <literal>ext/mysql</literal> или <literal>ext/mysqli</literal>,
настроенные на использование встроенного драйвера MySQL, могут также воспользоваться
этой возможностью. Обратите внимание, что <literal>PDO_MYSQL</literal> <emphasis>НЕ</emphasis>
поддерживает сжатие при использовании совместно с mysqlnd.

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d617b26e4b9db6f2a4a39e5bd45bb09e2dc91100 Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<chapter xml:id="mysqlnd.persist" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Постоянное соединение</title>
@ -25,27 +25,26 @@
флагом компиляции <literal>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</literal>.
Например:
</para>
<programlisting>
<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>
</programlisting>
<para>
Or alternatively:
Или альтернативный вариант:
</para>
<programlisting>
<programlisting>
<![CDATA[
shell# export CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT"
shell# configure --whatever-option
shell# make clean
shell# make
]]>
</programlisting>
</programlisting>
<para>
Обратите внимание, что только <literal>mysqli</literal> совместно с <literal>mysqlnd</literal>
используют <literal>COM_CHANGE_USER</literal>. Остальные комбинации
расширение-драйвер используют <literal>COM_PING</literal> при инициации
постоянного соединения.
модуль-драйвер используют <literal>COM_PING</literal> при первоначальном использовании постоянного соединения.
</para>
</chapter>
<!-- Keep this comment at the end of the file

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 74cc3023d86f22099ced1889e4eeb929eab8bfc3 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<chapter xml:id="mysqlnd.plugin" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>API для плагинов к встроенному драйверу MySQL</title>
@ -11,29 +11,29 @@
MySQL Proxy. Плагины <literal>mysqlnd</literal> могут реализовывать стандартные
задачи MySQL Proxy, такие как балансирование нагрузки, мониторинг и оптимизация
быстродействия. При этом, вследствие другой архитектуры и месторасположения,
плагины <literal>mysqlnd</literal> не имеют некоторых недочетов MySQL Proxy. Например,
нет единой точки точки отказа, не требуется установка отдельного proxy-сервера и нет
плагины <literal>mysqlnd</literal> не имеют некоторых недочетов MySQL Proxy. Например,
нет единой точки отказа, не требуется установка отдельного proxy-сервера и нет
необходимости в изучении нового языка программирования Lua.
</para>
<para>
Плагин <literal>mysqlnd</literal> можно рассматривать как расширение
Плагин <literal>mysqlnd</literal> можно рассматривать как модуль
<literal>mysqlnd</literal>. Плагины могут перехватывать большую часть функций
<literal>mysqlnd</literal>. Эти функции вызываются расширениями PHP, такими как
<literal>mysqlnd</literal>. Эти функции вызываются модулями PHP, такими как
<literal>ext/mysql</literal>, <literal>ext/mysqli</literal> и <literal>PDO_MYSQL</literal>.
В конечном счете, плагины <literal>mysqlnd</literal> могут перехватывать все запросы,
сделанные этими расширениями из клиентского приложения.
сделанные этими модулями из клиентского приложения.
</para>
<para>
Внутренние вызовы функций <literal>mysqlnd</literal> также могут быть перехвачены или
заменены. Ограничения по работе с внутренней таблицей функций <literal>mysqlnd</literal>
отсутствуют. Возможно настроить все таким образом, что при вызове определенных функций
<literal>mysqlnd</literal> из расширений, использующих <literal>mysqlnd</literal>, этот
<literal>mysqlnd</literal> из модулей, использующих <literal>mysqlnd</literal>, этот
вызов будет перенаправляться в соответствующую функцию плагина
<literal>mysqlnd</literal>. Возможность манипулировать внутренней таблицей функций
<literal>mysqlnd</literal> дает плагинам максимум гибкости.
</para>
<para>
Плагины <literal>mysqlnd</literal> фактически являются расширениями PHP, написанными
Плагины <literal>mysqlnd</literal> фактически являются модулями PHP, написанными
на C и использующими API для плагинов <literal>mysqlnd</literal> (встроенном в драйвер
<literal>mysqlnd</literal>). Плагины могут быть полностью прозрачными для
PHP-приложений. Изменять приложение не потребуется, поскольку плагины работают на
@ -52,8 +52,8 @@
<itemizedlist>
<listitem>
<para>
Разделение чтения и записи. Примером является расширение
PECL/mysqlnd_ms (Master Slave). Это расширение разделяет
Разделение чтения и записи. Примером является модуль
PECL/mysqlnd_ms (Master Slave). Модель разделяет
запросы на чтение и запись для настройки репликации.
</para>
</listitem>
@ -86,9 +86,9 @@
</listitem>
<listitem>
<para>
Аудит запросов. Примером является расширение
Аудит запросов. Примером является модуль
PECL/mysqlnd_sip (SQL Injection Protection, защита от
SQL-инъекций). Это расширение анализирует запросы и
SQL-инъекций). Модель анализирует запросы и
выполняет только подходящие под набор правил.
</para>
</listitem>
@ -101,7 +101,7 @@
<itemizedlist>
<listitem>
<para>
Кеширование. Примером является расширение
Кеширование. Примером является модуль
PECL/mysqlnd_qc (Query Cache, кеширование запросов).
</para>
</listitem>
@ -112,10 +112,10 @@
</listitem>
<listitem>
<para>
Шардинг. Примером является расширение PECL/mysqlnd_mc
(Multi Connect). Это расширение пытается разбить запрос
Шардинг. Примером является модуль PECL/mysqlnd_mc
(Multi Connect). Модель пытается разбить запрос
SELECT на n частей, используя SELECT ... LIMIT part_1,
SELECT LIMIT part_n. Оно отправляет запросы на
SELECT LIMIT part_n. Он отправляет запросы на
отдельные MySQL-сервера и собирает результат на клиенте.
</para>
</listitem>
@ -180,7 +180,7 @@
<literal>mysqlnd</literal> - только для PHP-приложений.
</para>
<para>
Как расширение PHP, плагин <literal>mysqlnd</literal>
Как модуль PHP, плагин <literal>mysqlnd</literal>
устанавливается на сервере приложений PHP вместе с
остальным PHP. MySQL Proxy может быть запущен на сервере
приложений PHP или же быть установлен на отдельной машине
@ -235,14 +235,14 @@
<literal>mysqlnd</literal> привязаны к жизненному циклу PHP, базирующемуся на
запросах. Также MySQL Proxy может разделять единожды полученный результат между
разными серверами приложений. Плагины <literal>mysqlnd</literal> для решения этой
задачи должны использовать какое нибудь постоянное хранилище, для сохранения
результатов между запросами. Например для этого может быть использован другой демон,
задачи должны использовать какое-нибудь постоянное хранилище, для сохранения
результатов между запросами. Например, для этого может быть использован другой демон,
такой как Memcache. Так что в этом случае MySQL Proxy работает явно лучше.
</para>
<para>
MySQL Proxy работает поверх сетевых протоколов. С помощью
MySQL Proxy вы можете разобрать и подвергнуть инженерному
анализу протокол MySQL Client Server. Что либо поменять
анализу протокол MySQL Client Server. Что-либо поменять
можно только манипулируя протоколом обмена. Если протокол
вдруг поменяется (что случается крайне редко), скрипты
MySQL Proxy будет необходимо переписывать.
@ -256,9 +256,9 @@
програмировать на уровне протокола обмена.
</para>
<para>
<literal>Mysqlnd</literal> реализует протокол обмена.
Плагины, таким образом, перехватывать, исследовать, менять
и даже целиком заменять коммуникационный протокол. Хотя
<literal>Mysqlnd</literal> реализует протокол обмена.
Таким образом, плагины могут перехватывать, исследовать, менять
и даже целиком заменять протокол связи. Хотя
обычно ничего этого не требуется.
</para>
<para>
@ -273,10 +273,10 @@
<title>Получение API плагинов mysqlnd</title>
<para>
API плагинов <literal>mysqlnd</literal> является частью
стандартного расширения <literal>ext/mysqlnd</literal>.
стандартного модуля <literal>ext/mysqlnd</literal>.
API плагинов <literal>mysqlnd</literal> начали разрабатывать
в декабре 2009 года. Он разрабатывался как часть
репозитороия исходных кодов PHP и, соответственно,
репозитория исходных кодов PHP и, соответственно,
доступен через публичный репозиторий Git либо через
загрузку снапшота исходных кодов.
</para>
@ -356,7 +356,7 @@
<para>
В процессе разработки, разработчики должны отслеживать версию
<literal>mysqlnd</literal> на предмет совместимости и версионного тестирования, так как
версии <literal>mysqlnd</literal>имеют свойство меняться и это
версии <literal>mysqlnd</literal> имеют свойство меняться и это
может случиться в процессе работы над плагином.
</para>
</section>
@ -413,11 +413,11 @@
</tgroup>
</table>
<para>
<emphasis role="bold">Объектно ориентированная парадигма C</emphasis>
<emphasis role="bold">Объектно-ориентированная парадигма C</emphasis>
</para>
<para>
На уровне кода, <literal>mysqlnd</literal> использует
паттерн C для реализации объектно ориентированного подхода.
паттерн C для реализации объектно-ориентированного подхода.
</para>
<para>
В C объекты описывают используя <literal>struct</literal>.
@ -450,26 +450,26 @@
</itemizedlist>
<para>
При старте движка PHP, первым делом вызывается функция
инициализации модулей (MINIT) для каждого зарегистрированного расширения. Это
позволяет каждому расширению установить переменные и выделить ресурсы,
инициализации модулей (MINIT) для каждого зарегистрированного модуля. Это
позволяет каждому модулю установить переменные и выделить ресурсы,
которые будут задействованы все время жизни процесса
движка PHP. Когда движек PHP выключается, он вызывает
функцию остановки модулей (MSHUTDOWN) для каждого расширения.
движка PHP. Когда движок PHP выключается, он вызывает
функцию остановки модулей (MSHUTDOWN) для каждого модуля.
</para>
<para>
На протяжении жизненного цикла движка PHP, он принимает некоторое количество
запросов. Каждый запрос порождает новый жизненный цикл. На каждый запрос, движек PHP
вызывает функцию инициализации для каждого расширения. Расширение может предпринять
запросов. Каждый запрос порождает новый жизненный цикл. На каждый запрос, движок PHP
вызывает функцию инициализации для каждого модуля. Модуль может предпринять
выставление переменных и выделение ресурсов, требуемых для обслуживания запроса.
По окончанию жизни запроса, движек вызывает функцию остановки запроса (RSHUTDOWN)
для каждого расштрения, что позволяет им произвести необходимые чистки.
По окончании жизни запроса, движок вызывает функцию остановки запроса (RSHUTDOWN)
для каждого модуля, что позволяет им произвести необходимые чистки.
</para>
<para>
<emphasis role="bold">Как работает плагин</emphasis>
</para>
<para>
Плагин <literal>mysqlnd</literal> работает перехватывая
вызовы расширений, использующих <literal>mysqlnd</literal>,
вызовы модулей, использующих <literal>mysqlnd</literal>,
к <literal>mysqlnd</literal>. Это достигается подменой
таблицы функций <literal>mysqlnd</literal> на созданную
плагином.
@ -498,16 +498,16 @@ void minit_register_hooks(TSRMLS_D) {
]]>
</programlisting>
<para>
Манипуляция таблицей функций соединения необходимо
Манипуляцией с таблицей функций соединения необходимо
заниматься на этапе инициализации модуля (MINIT). Таблица
функций - это глобальный разделяемый ресурс. В
многопоточном окружении, со сборкой TSRM, манипуляция
многопоточном окружении, со сборкой TSRM, манипуляция
глобальным разделяемым ресурсом на этапе обработки
запроса приведет к конфликтам.
</para>
<note>
<para>
Не используйте какую либо логику связанную с
Не используйте какую-либо логику, связанную с
фиксированным размером при манипуляции с таблицей
функций <literal>mysqlnd</literal>. Всегда добавляйте
новые методы в конец таблицы, так как сама таблица может
@ -523,7 +523,7 @@ void minit_register_hooks(TSRMLS_D) {
- родительский.
</para>
<para>
В некоторых случаях, например для <literal>Connection::stmt_init()</literal>, жизненно
В некоторых случаях, например, для <literal>Connection::stmt_init()</literal>, жизненно
важно сначала вызвать родительский метод, и только потом делать
что либо в новом методе.
</para>
@ -625,7 +625,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
]]>
</programlisting>
<para>
Разработчик плагин отвечает за управление памятью данных плагина.
Разработчик плагина отвечает за управление памятью данных плагина.
</para>
<para>
Рекомендуется использовать управление памятью <literal>mysqlnd</literal> для данных
@ -656,7 +656,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<entry>Результирующий набор (MYSQLND_RES)</entry>
<entry>MINIT or later</entry>
<entry>Да</entry>
<entry>mysqlnd_result_get_methods() или меодом объекта,
<entry>mysqlnd_result_get_methods() или методом объекта,
манипулирующим таблицей функций</entry>
</row>
<row>
@ -675,14 +675,14 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<entry>Сеть (MYSQLND_NET)</entry>
<entry>MINIT или позже</entry>
<entry>Да</entry>
<entry>mysqlnd_net_get_methods() или меодом объекта,
<entry>mysqlnd_net_get_methods() или методом объекта,
манипулирующим таблицей функций</entry>
</row>
<row>
<entry>Протокол обмена (MYSQLND_PROTOCOL)</entry>
<entry>MINIT или позже</entry>
<entry>Да</entry>
<entry>mysqlnd_protocol_get_methods() или меодом
<entry>mysqlnd_protocol_get_methods() или методом
объекта, манипулирующим таблицей функций</entry>
</row>
</tbody>
@ -701,7 +701,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<para>
Прочие классы используют копии глобально разделенных таблиц функций. Таблица функций
создается одновременно с объектом. Каждый объект использует свою таблицу. Это дает вам
две возможности: вы можете управлять таблицей функций по умолчанию для объекта во
две возможности: вы можете управлять таблицей функций по умолчанию для объекта во
время MINIT, а также вы можете изменять методы объекта не затрагивая другие
экземпляры этого же класса.
</para>
@ -787,7 +787,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<row>
<entry>Оператор (MYSQLND_STMT)</entry>
<entry>Connection::stmt_init()</entry>
<entry>Да, но вызовите родителя!!</entry>
<entry>Да, но вызовите родителя!</entry>
<entry>Connection::stmt_init()</entry>
</row>
<row>
@ -807,12 +807,12 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
</table>
<para>
Настоятельно рекомендуется не заменять конструктор
целиком Конструкторы производят выделение памяти.
целиком. Конструкторы производят выделение памяти.
Выделение памяти жизненно необходимо для API плагинов
<literal>mysqlnd</literal> и для логики объекта
<literal>mysqlnd</literal>. Если вам не страшны
предупреждения и хотите сильно поменять конструктор, то
хотя бы вызовите родительский конструктор прежде, чем что либо делать.
хотя бы вызовите родительский конструктор прежде, чем что-либо делать.
</para>
<para>
Несмотря на все предупреждения, это может быть полезным для конструктора подкласса.
@ -865,12 +865,12 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
</tgroup>
</table>
<para>
Деструкторы являются подходящим местом, чтобы освободить ресуры занимаемые
свойствами,
Деструкторы являются подходящим местом, чтобы освободить ресуры, занимаемые
свойствами
<literal>mysqlnd_plugin_get_plugin_<replaceable>&lt;object&gt;</replaceable>_data()</literal>.
</para>
<para>
Перечисленные деструкторы могут быть не совпадать с актуальными методами
Перечисленные деструкторы могут не совпадать с актуальными методами
<literal>mysqlnd</literal> для очистки самого объекта. Однако они являются самым лучшим
местом, куда вы можете вклиниться для очистки данных своего плагина. Так же как и
с конструкторами, вы можете полностью переопределить эти методы, но делать это не
@ -1021,7 +1021,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<tgroup cols="3">
<thead>
<row>
<entry>Расширение</entry>
<entry>Модуль</entry>
<entry>Указатель mysqlnd.query()</entry>
<entry>Стек вызова, если вызывается родитель</entry>
</row>
@ -1073,19 +1073,19 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
</tgroup>
</table>
<para>
В этом сценарии загружены плагины кеша(<literal>ext/mysqlnd_cache</literal>) и
В этом сценарии загружены плагины кеша (<literal>ext/mysqlnd_cache</literal>) и
мониторинга (<literal>ext/mysqlnd_monitor</literal>).
Оба наследуют класс <literal>Connection::query()</literal>. регистрация плагинов
происходит на этапе <literal>MINIT</literal> в соответствии с описанной
выше логикой. PHP, по умолчанию, вызывает расширения в алфавитном порядке.
Плагины не знают друг о друге и не накладывают каких либо зависимостей.
выше логикой. PHP, по умолчанию, вызывает модули в алфавитном порядке.
Плагины не знают друг о друге и не накладывают каких-либо зависимостей.
</para>
<para>
По умолчанию, плагины вызывают родительский метод query из своей, переопределенной,
версии этого метода.
</para>
<para>
<emphasis role="bold">Резюме по расширению PHP</emphasis>
<emphasis role="bold">Резюме по модулю PHP</emphasis>
</para>
<para>
Повторение пройденного материала на примере поведения плагина
@ -1101,9 +1101,9 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
</listitem>
<listitem>
<para>
Приложение использует одно из следующих расширений <literal>ext/mysql</literal>,
Приложение использует одно из следующих модулей <literal>ext/mysql</literal>,
<literal>ext/mysqli</literal> или <literal>PDO_MYSQL</literal>. Все
три расширения используют <literal>mysqlnd</literal> для соединения с 192.168.2.29.
три модуля используют <literal>mysqlnd</literal> для соединения с 192.168.2.29.
</para>
</listitem>
<listitem>
@ -1127,7 +1127,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<listitem>
<para>
<literal>ext/mysqlnd_plugin</literal> делает то же самое, что и
<literal>parent::connect(127.0.0.1)</literal> вызывая оригинальный метод
<literal>parent::connect(127.0.0.1)</literal>, вызывая оригинальный метод
<literal>mysqlnd</literal> для соединения.
</para>
</listitem>
@ -1140,8 +1140,8 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
</listitem>
<listitem>
<para>
Без разницы, какое расширение было использовано, оно все равно получит
соединение к 127.0.0.1. После этого, расширение возвращает это соединение
Без разницы, какой модуль был использован, он все равно получит
соединение к 127.0.0.1. После этого, модуль возвращает это соединение
приложению. Круг замкнулся.
</para>
</listitem>
@ -1151,7 +1151,7 @@ static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
<title>Начинаем разработку плагина mysqlnd</title>
<para>
Важно помнить, что плагин <literal>mysqlnd</literal> сам по себе
является расширением PHP.
является модулем PHP.
</para>
<para>
Следующий пример показывает базовую структуру функции MINIT,
@ -1205,7 +1205,7 @@ mysqlnd_plugin_set_conn_proxy(new proxy());
<orderedlist>
<listitem>
<para>
PHP: пользователь регистрирует функцию обратного вызова плагина
PHP: пользователь регистрирует callback-функцию плагина
</para>
</listitem>
<listitem>
@ -1229,12 +1229,12 @@ mysqlnd_plugin_set_conn_proxy(new proxy());
<orderedlist>
<listitem>
<para>
Вызывает пользовательскую функцию обратного вызова
Вызывает пользовательскую callback-функцию
</para>
</listitem>
<listitem>
<para>
Или оригинальный метьод <literal>mysqlnd</literal>, если она не задана
Или оригинальный метод <literal>mysqlnd</literal>, если она не задана
</para>
</listitem>
</orderedlist>
@ -1252,7 +1252,7 @@ mysqlnd_plugin_set_conn_proxy(new proxy());
</listitem>
<listitem>
<para>
Примите и зарегистрируйте прокси объект через
Примите и зарегистрируйте прокси объект с помощью
"mysqlnd_plugin_set_conn_proxy()"
</para>
</listitem>
@ -1265,7 +1265,7 @@ mysqlnd_plugin_set_conn_proxy(new proxy());
</orderedlist>
<para>
Методы объекта пространства пользователя должны быть вызваны с помощью
<literal>call_user_function()</literal> или на уровень ниже, через
<literal>call_user_function()</literal> или на уровень ниже, с помощью
<literal>zend_call_method()</literal>.
</para>
<para>
@ -1402,7 +1402,7 @@ MYSQLND_METHOD(my_conn_class, connect)(
class proxy extends mysqlnd_plugin_connection {
public function connect($conn, $host, ...) {
/* до внедрения */
printf("Connecting to host = '%s'\n", $host);
printf("Подключение к = '%s'\n", $host);
debug_print_backtrace();
return parent::connect($conn);
}
@ -1410,7 +1410,7 @@ MYSQLND_METHOD(my_conn_class, connect)(
public function query($conn, $query) {
/* после внедрения */
$ret = parent::query($conn, $query);
printf("Query = '%s'\n", $query);
printf("Запрос = '%s'\n", $query);
return $ret;
}
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 86fe1b6af3972827827c20e6c5e27919073275b8 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<refentry xml:id="function.mysqlnd-memcache-get-config" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
@ -17,7 +17,7 @@
<methodparam><type>mixed</type><parameter>connection</parameter></methodparam>
</methodsynopsis>
<para>
Эта функция возвращает массив со всеми настройками mysqlnd_memcache, который
Функция возвращает массив со всеми настройками mysqlnd_memcache, который
связан с соединением MySQL. Включая MySQL, объект
Memcache, предоставленный через <function>mysqlnd_memcache_set</function>
и информацию о настройках отображения таблиц, которая была автоматически собрана
@ -32,7 +32,7 @@
<term><parameter>connection</parameter></term>
<listitem>
<para>
Соединение MySQL с помощью одного из расширений MySQL API для PHP:
Соединение MySQL с помощью одного из модулей MySQL API для PHP:
<link linkend="ref.pdo-mysql">PDO_MYSQL</link>, <link linkend="book.mysqli">mysqli</link> или
<link linkend="book.mysql">ext/mysql</link>.
</para>
@ -71,13 +71,13 @@
<row>
<entry>pattern</entry>
<entry>
Регулярное выражение PCRE для разбора SQL-запроса отправленного на сервер.
Регулярное выражение PCRE для разбора SQL-запроса, отправленного на сервер.
Запросы, попадающие под этот шаблон будут проанализированы на предмет
возможности их перехвата и запуска через интерфейс memcache, либо
необходимости использования стандартного протокола MySQL.
Это может быть шаблон по умолчанию
(<literal>MYSQLND_MEMCACHE_DEFAULT_REGEXP</literal>) или же его можно
определить через <function>mysqlnd_memcache_set</function>.
определить с помощью <function>mysqlnd_memcache_set</function>.
</entry>
</row>
<row>
@ -92,7 +92,7 @@
</row>
<row>
<entry>mapping_query</entry>
<entry>SQL-запрос используемый
<entry>SQL-запрос, используемый
<methodname>mysqlnd_memcache_set</methodname>
для идентификации доступных контейнеров и отображений. Результат этого
запроса предоставлен в элементах mappings.
@ -114,8 +114,8 @@
<row>
<entry>prefix</entry>
<entry>
Префикс используемый при доступе к данным через memcache. С плагином
MySQL InnoDB Memcache Deamon обычно начинается с @@ и заканчивается
Префикс, используемый при доступе к данным через memcache. С плагином
MySQL InnoDB Memcache Deamon он обычно начинается с @@ и заканчивается
настраиваемым разделителем. Этот префикс помещается перед значением ключа
во время использования протокола memcache.
</entry>
@ -123,7 +123,7 @@
<row>
<entry>schema_name</entry>
<entry>
Имя схемы (БД) содержащий необходимые таблицы.
Имя схемы (БД), содержащий необходимые таблицы.
</entry>
</row>
<row>
@ -135,7 +135,7 @@
<row>
<entry>id_field_name</entry>
<entry>
Имя столбца таблицы используемого в условии WHERE при запросе через
Имя столбца таблицы, используемого в условии WHERE при запросе через
memcache. Обычно это поле являющееся первичным ключем.
</entry>
</row>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 86fe1b6af3972827827c20e6c5e27919073275b8 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- Reviewed: yes Maintainer: sergey -->
<refentry xml:id="function.mysqlnd-memcache-set" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
@ -21,14 +21,14 @@
</methodsynopsis>
<para>
Связывает <parameter>mysql_connection</parameter> с
<parameter>memcache_connection</parameter> используя шаблон
<parameter>memcache_connection</parameter>, используя шаблон
<parameter>pattern</parameter> как регулярное выражение PCRE и
<parameter>callback</parameter> в качестве функции обратного вызова для
<parameter>callback</parameter> в качестве callback-функции для
оповещения, или разрывает связь с <parameter>mysql_connection</parameter>.
</para>
<para>
Во время связывания соединения MySQL с соединением Memcache, эта функция
запросит у сервера MySQL его конфигураци. Это позволяет автоматически определить,
запросит у сервера MySQL его конфигурацию. Это позволяет автоматически определить,
сконфигурирован ли сервер с поддержкой плагина InnoDB Memcache Daemon или
поддержкой MySQL Cluster NDB Memcache. Также сервер будет запрошен на предмет
автоматической идентификации экспортированных таблиц и прочих настроек.
@ -44,7 +44,7 @@
<term><parameter>mysql_connection</parameter></term>
<listitem>
<para>
Соединение MySQL с помощью одного из расширений MySQL API для PHP:
Соединение MySQL с помощью одного из модулей MySQL API для PHP:
<link linkend="ref.pdo-mysql">PDO_MYSQL</link>, <link linkend="book.mysqli">mysqli</link> или
<link linkend="book.mysql">ext/mysql</link>.
</para>
@ -54,7 +54,7 @@
<term><parameter>memcache_connection</parameter></term>
<listitem>
<para>
Экземпляр <link linkend="book.memcached">Memcached</link> соединенный с
Экземпляр <link linkend="book.memcached">Memcached</link>, соединенный с
плагином MySQL Memcache Daemon. Если этот параметр пропущен, то
<parameter>mysql_connection</parameter> будет отвязано от всех соединений с
memcache. Если существовала предыдущая привязка, то она будет заменена.
@ -67,9 +67,9 @@
<para>
Регулярное выражение <link linkend="book.pcre">PCRE (Perl Compatible
Regular Expression)</link> для идентификации потенциальных запросов к
Memcache. Запрос должен иметь три под-шаблона. Первый подшаблон
Memcache. Запрос должен иметь три подшаблона. Первый подшаблон
содержит список запрошенных полей, второй содержит ID столбца из запроса, а третий
- запрошенное значение. если параметр опущен или установлен как &null;, то
- запрошенное значение. Если параметр опущен или установлен как &null;, то
будет использован шаблон по умолчанию.
</para>
</listitem>
@ -78,7 +78,7 @@
<term><parameter>callback</parameter></term>
<listitem>
<para>
Функция обратного вызова, которая будет запущена при отправке
Callback-функция, которая будет запущена при отправке
запроса к MySQL. Эта функция принимает один параметр типа &boolean;, который
определяет, был ли запрос отправлен с через Memcache.
</para>
@ -90,7 +90,7 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&true; если связывание или разрыв связи прошли успешно. &false; в случае ошибки.
&true;, если связывание или разрыв связи прошли успешно. &false; в случае возникновения ошибки.
</para>
</refsect1>
@ -100,7 +100,7 @@
<example>
<title>
Пример использования <function>mysqlnd_memcache_set</function> с
<function>var_dump</function> в качестве отладочной функции обратного вызова.</title>
<function>var_dump</function> в качестве отладочной callback-функции.</title>
<programlisting role="php">
<![CDATA[