<?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.persist.php',
    1 => 'Постоянное соединение',
    2 => 'Постоянное соединение',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.incompatibilities.php',
    1 => 'Несовместимости',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.stats.php',
    1 => 'Статистика',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/mysqlnd/persist.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.persist" class="chapter">
 <h1 class="title">Постоянное соединение</h1>

 <p class="simpara">
  <strong>Использование постоянных соединений</strong>
 </p>
 <p class="simpara">
  Если <code class="literal">mysqli</code> используется с <code class="literal">mysqlnd</code>,\
  при создании постоянного соединения оно генерирует на сервере запрос
  <code class="literal">COM_CHANGE_USER</code> (<code class="literal">mysql_change_user()</code>).
  Это гарантирует, что при подключении будет повторно произведена авторизация.
 </p>
 <p class="simpara">
  Поскольку из-за вызовов <code class="literal">COM_CHANGE_USER</code> увеличиваются
  накладные расходы, возможно отключить такое поведение во время компиляции.
  В таком случае повторное использование постоянного соединения будет генерировать
  вызов <code class="literal">COM_PING</code> (<code class="literal">mysql_ping</code>), для проверки
  возможности повторного использования соединения.
 </p>
 <p class="simpara">
  Генерация вызова <code class="literal">COM_CHANGE_USER</code> может быть отключена
  флагом компиляции <code class="literal">MYSQLI_NO_CHANGE_USER_ON_PCONNECT</code>.
  Например:
 </p>
 <div class="example-contents">
<div class="cdata"><pre>
shell# CFLAGS=&quot;-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT&quot; ./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 &amp;&amp; make clean &amp;&amp; make -j6
</pre></div>
 </div>

 <p class="simpara">
  Или альтернативный вариант:
 </p>
 <div class="example-contents">
<div class="cdata"><pre>
shell# export CFLAGS=&quot;-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT&quot;
shell# configure --whatever-option
shell# make clean
shell# make
</pre></div>
 </div>

 <p class="simpara">
  Обратите внимание, что только <code class="literal">mysqli</code> совместно с <code class="literal">mysqlnd</code>
  используют <code class="literal">COM_CHANGE_USER</code>. Остальные комбинации
  модуль-драйвер используют <code class="literal">COM_PING</code> при первоначальном использовании постоянного соединения.
 </p>
</div>
<?php manual_footer($setup); ?>