mirror of
https://github.com/php/doc-ru.git
synced 2025-07-22 18:26:31 +00:00
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:
@ -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
|
||||
-->
|
||||
|
@ -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
|
||||
-->
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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>
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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><object></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;
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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[
|
||||
|
Reference in New Issue
Block a user