mirror of
https://github.com/php/doc-ru.git
synced 2025-07-30 12:57:40 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@348507 c90b9560-bf6c-de11-be94-00142212c4b1
144 lines
8.3 KiB
XML
144 lines
8.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: cd09fab47b40563cb8b2316d817efc973d991713 Maintainer: das Status: ready -->
|
||
<!-- 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, важно понимать,
|
||
что он не предоставляет программисту PHP нового API. API к базе
|
||
данных MySQL для программиста предоставляются модулями MySQL,
|
||
<literal>mysqli</literal> и PDO MYSQL. Эти модули могут использовать
|
||
возможности встроенного драйвера MySQL для общения с сервером MySQL.
|
||
Таким образом, вы не должны думать о встроенном драйвере MySQL как об API.
|
||
</para>
|
||
<para>
|
||
<emphasis role="bold">Зачем его использовать?</emphasis>
|
||
</para>
|
||
<para>
|
||
Использование встроенного драйвера MySQL дает некоторые плюсы
|
||
относительно клиентской библиотеки MySQL.
|
||
</para>
|
||
<para>
|
||
Более старая клиентская библиотека MySQL была написана MySQL AB (сейчас Oracle
|
||
Corporation) и выпускалась под лицензией MySQL. В конечном итоге это привело
|
||
к тому, что поддержка MySQL в PHP была по умолчанию выключена.
|
||
С другой стороны, встроенный драйвер MySQL был разработан как часть
|
||
проекта PHP, и выпущен под лицензией PHP. Это снимает вопросы с
|
||
лицензированием, бывшие проблемными в прошлом.
|
||
</para>
|
||
<para>
|
||
Также, в прошлом вам требовалось собирать модули, работающие с базой
|
||
данных MySQL, рядом с клиентской библиотекой MySQL. Обычно это означало,
|
||
что на машине, на которой вы разрабатывали PHP-код, требовался установленный
|
||
MySQL. К тому же, когда PHP-приложение работало, модули, работающие
|
||
с MySQL, могли обращаться к клиентской библиотеке MySQL во время работы,
|
||
так что ее файл должен был быть установлен в вашей системе.
|
||
Со встроенным драйвером MySQL эта проблема исчезла, поскольку он является
|
||
частью стандартного дистрибутива. Таким образом, вам не потребуется
|
||
установленный MySQL, чтобы собирать PHP или использовать работающие
|
||
с базой данных PHP-приложения.
|
||
</para>
|
||
<para>
|
||
Поскольку встроенный драйвер MySQL написан как модуль PHP, он
|
||
тесно связан с работой PHP. Это приводит к приросту эффективности, особенно
|
||
в плане использования оперативной памяти, поскольку драйвер использует
|
||
систему управления памятью PHP. Он также поддерживает настройки лимита
|
||
памяти PHP. Использование встроенного драйвера MySQL приводит к сопоставимой
|
||
или даже лучшей производительности, чем в случае клиентской библиотеки MySQL,
|
||
поскольку всегда гарантируется наиболее эффективное использование памяти.
|
||
Одним из примеров эффективности работы с памятью является то, что при использовании
|
||
клиентской библиотеки MySQL каждая строка хранится в памяти дважды, тогда как
|
||
в случае встроенного драйвера MySQL каждая строка хранится в памяти только один раз.
|
||
</para>
|
||
<note>
|
||
<title>Контроль использования памяти</title>
|
||
<para>
|
||
Так как встроенный драйвер MySQL использует систему контроля памяти PHP,
|
||
используемая им память может быть отслежена с помощью функции <function>memory_get_usage</function>.
|
||
Это нельзя сделать с помощью libmysqlclient, так как он использует функцию языка Си malloc().
|
||
</para>
|
||
</note>
|
||
<para>
|
||
<emphasis role="bold">Особые возможности</emphasis>
|
||
</para>
|
||
<para>
|
||
Встроенный драйвер MySQL также предоставляет некоторые особые возможности,
|
||
недоступные при использовании расширениями клиентской библиотеки MySQL.
|
||
Список этих возможностей приведен ниже:
|
||
</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Улучшены постоянные соединения
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Особая функция <function>mysqli_fetch_all</function>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Вызов статистики производительности:
|
||
<function>mysqli_get_cache_stats</function>,
|
||
<function>mysqli_get_client_stats</function>,
|
||
<function>mysqli_get_connection_stats</function>
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>
|
||
Статистика производительности может быть очень полезна для нахождения
|
||
узких мест в производительности.
|
||
</para>
|
||
<para>
|
||
Встроенный драйвер MySQL также поддерживает постоянные соединения
|
||
при использовании модуля <literal>mysqli</literal>.
|
||
</para>
|
||
<para>
|
||
<emphasis role="bold">Поддержка SSL</emphasis>
|
||
</para>
|
||
<para>
|
||
Встроенный драйвер MySQL поддерживает SSL с версии PHP 5.3.3
|
||
</para>
|
||
<para>
|
||
<emphasis role="bold">Поддержка протокола с использованием сжатия</emphasis>
|
||
</para>
|
||
<para>
|
||
Начиная с PHP 5.3.2, встроенный драйвер MySQL поддерживает клиент-серверный
|
||
протокол с использованием сжатия. Этой поддержки нет в версиях 5.3.0 и 5.3.1.
|
||
Модули, например, <literal>ext/mysql</literal> или <literal>ext/mysqli</literal>,
|
||
настроенные на использование встроенного драйвера MySQL, могут также воспользоваться
|
||
этой возможностью. Обратите внимание, что <literal>PDO_MYSQL</literal> <emphasis>НЕ</emphasis>
|
||
поддерживает сжатие при использовании совместно с mysqlnd.
|
||
</para>
|
||
<para>
|
||
<emphasis role="bold">Поддержка именованных каналов</emphasis>
|
||
</para>
|
||
<para>
|
||
Поддержка именованных каналов для Windows была добавлена в PHP версии 5.4.0.
|
||
</para>
|
||
</chapter>
|
||
<!-- 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
|
||
--> |