<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.mysqlnd.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.overview.php',
    1 => 'Обзор',
    2 => 'Обзор',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.install.php',
    1 => 'Установка',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/mysqlnd/overview.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.overview" class="chapter">
 <h1 class="title">Обзор</h1>

 <p class="simpara">
  <strong>Чем он не является</strong>
 </p>
 <p class="simpara">
  Хотя встроенный драйвер MySQL написан как модуль PHP, важно понимать,
  что он не предоставляет программисту PHP нового API. API к базе
  данных MySQL для программиста предоставляются модулями MySQL,
  <code class="literal">mysqli</code> и PDO MYSQL. Эти модули могут использовать
  возможности встроенного драйвера MySQL для общения с сервером MySQL.
  Таким образом, вы не должны думать о встроенном драйвере MySQL как об API.
 </p>
 <p class="simpara">
  <strong>Зачем его использовать?</strong>
 </p>
 <p class="simpara">
  Использование встроенного драйвера MySQL даёт некоторые плюсы
  относительно клиентской библиотеки MySQL.
 </p>
 <p class="simpara">
  Более старая клиентская библиотека MySQL была написана MySQL AB (сейчас Oracle
  Corporation) и выпускалась под лицензией MySQL. В конечном итоге это привело
  к тому, что поддержка MySQL в PHP была по умолчанию выключена.
  С другой стороны, встроенный драйвер MySQL был разработан как часть
  проекта PHP, и выпущен под лицензией PHP. Это снимает вопросы с
  лицензированием, бывшие проблемными в прошлом.
 </p>
 <p class="simpara">
  Также, в прошлом вам требовалось собирать модули, работающие с базой
  данных MySQL, рядом с клиентской библиотекой MySQL. Обычно это означало,
  что на машине, на которой вы разрабатывали PHP-код, требовался установленный
  MySQL. К тому же, когда PHP-приложение работало, модули, работающие
  с MySQL, могли обращаться к клиентской библиотеке MySQL во время работы,
  так что её файл должен был быть установлен в вашей системе.
  Со встроенным драйвером MySQL эта проблема исчезла, поскольку он является
  частью стандартного дистрибутива. Таким образом, вам не потребуется
  установленный MySQL, чтобы собирать PHP или использовать работающие
  с базой данных PHP-приложения.
 </p>
 <p class="simpara">
  Поскольку встроенный драйвер MySQL написан как модуль PHP, он
  тесно связан с работой PHP. Это приводит к приросту эффективности, особенно
  в плане использования оперативной памяти, поскольку драйвер использует
  систему управления памятью PHP. Он также поддерживает настройки лимита
  памяти PHP. Использование встроенного драйвера MySQL приводит к сопоставимой
  или даже лучшей производительности, чем в случае клиентской библиотеки MySQL,
  поскольку всегда гарантируется наиболее эффективное использование памяти.
  Одним из примеров эффективности работы с памятью является то, что при использовании
  клиентской библиотеки MySQL каждая строка хранится в памяти дважды, тогда как
  в случае встроенного драйвера MySQL каждая строка хранится в памяти только один раз.
 </p>
 <blockquote class="note"><p><strong class="note">Замечание</strong>: 
  <strong>Контроль использования памяти</strong><br />
  <span class="simpara">
   Так как встроенный драйвер MySQL использует систему контроля памяти PHP,
   используемая им память может быть отслежена с помощью функции <span class="function"><a href="function.memory-get-usage.php" class="function">memory_get_usage()</a></span>.
   Это нельзя сделать с помощью libmysqlclient, так как он использует функцию языка Си malloc().
  </span>
 </p></blockquote>
 <p class="simpara">
  <strong>Особые возможности</strong>
 </p>
 <p class="simpara">
  Встроенный драйвер MySQL также предоставляет некоторые особые возможности,
  недоступные при использовании расширениями клиентской библиотеки MySQL.
  Список этих возможностей приведён ниже:
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    Улучшены постоянные соединения
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    Особая функция <span class="function"><a href="mysqli-result.fetch-all.php" class="function">mysqli_fetch_all()</a></span>
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    Вызов статистики производительности:
    <span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span>,
    <span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span>
   </span>
  </li>
 </ul>
 <p class="simpara">
  Статистика производительности может быть очень полезна для нахождения
  узких мест в производительности.
 </p>
 <p class="simpara">
  Встроенный драйвер MySQL также поддерживает постоянные соединения
  при использовании модуля <code class="literal">mysqli</code>.
 </p>
 <p class="simpara">
  <strong>Поддержка SSL</strong>
 </p>
 <p class="simpara">
  Встроенный драйвер MySQL поддерживает SSL.
 </p>
 <p class="simpara">
  <strong>Поддержка протокола с использованием сжатия</strong>
 </p>
 <p class="simpara">
  Встроенный драйвер MySQL поддерживает клиент-серверный
  протокол с использованием сжатия.
  Модули, например, <code class="literal">ext/mysql</code> или <code class="literal">ext/mysqli</code>,
  настроенные на использование встроенного драйвера MySQL, могут также воспользоваться
  этой возможностью. Обратите внимание, что <code class="literal">PDO_MYSQL</code> <em>НЕ</em>
  поддерживает сжатие при использовании совместно с mysqlnd.
 </p>
 <p class="simpara">
  <strong>Поддержка именованных каналов</strong>
 </p>
 <p class="simpara">
  Именованные каналы можно использовать для подключения в средах Windows.
 </p>
</div>
<?php manual_footer($setup); ?>