<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.memcache.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'memcache.addserver.php',
    1 => 'Memcache::addServer',
    2 => 'Добавляет сервер memcached в пул соединений',
  ),
  'up' => 
  array (
    0 => 'class.memcache.php',
    1 => 'Memcache',
  ),
  'prev' => 
  array (
    0 => 'memcache.add.php',
    1 => 'Memcache::add',
  ),
  'next' => 
  array (
    0 => 'memcache.close.php',
    1 => 'Memcache::close',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/memcache/memcache/addserver.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="memcache.addserver" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">Memcache::addServer</h1>
  <h1 class="refname">memcache_add_server</h1>
  <p class="verinfo">(PECL memcache &gt;= 2.0.0)</p><p class="refpurpose"><span class="refname">Memcache::addServer</span> -- <span class="refname">memcache_add_server</span> &mdash; <span class="dc-title">Добавляет сервер memcached в пул соединений</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-memcache.addserver-description">
  <h3 class="title">Описание</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>Memcache::addServer</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$host</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$port</code><span class="initializer"> = 11211</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$persistent</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$weight</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$timeout</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$retry_interval</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$status</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$failure_callback</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$timeoutms</code><span class="initializer"> = ?</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

    <div class="methodsynopsis dc-description"><span class="methodname"><strong>memcache_add_server</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="class.memcache.php" class="type Memcache">Memcache</a></span> <code class="parameter">$memcache</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$host</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$port</code><span class="initializer"> = 11211</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$persistent</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$weight</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$timeout</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$retry_interval</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$status</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$failure_callback</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$timeoutms</code><span class="initializer"> = ?</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


  <p class="simpara">
   Метод <span class="function"><strong>Memcache::addServer()</strong></span> добавляет сервер в пул соединений.
  </p>

  <p class="simpara">
   В отличие от методов <span class="function"><a href="memcache.connect.php" class="function">Memcache::connect()</a></span>
   и <span class="function"><a href="memcache.pconnect.php" class="function">Memcache::pconnect()</a></span> при вызове этого метода сетевое соединение не устанавливается,
   пока не потребуется. Поэтому
   при добавлении большого количества серверов в пул производительность не снижается,
   поскольку, возможно, соединения не потребуются.
  </p>

  <p class="simpara">
   Потребность в отказоустойчивости возникает на любом этапе в любом методе,
   и если при этом хотя бы один сервер из пула окажется доступен, пользователь не получит
   оповещения. Любой тип ошибки сокета или сервера Memcached, за исключением ошибки переполнения
   памяти, может включить протокол обеспечения отказоустойчивости. Стандартные клиентские ошибки
   наподобие добавления существующего ключа не вызовут такого поведения.
  </p>

  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Метод добавили в модуль Memcache версии 2.0.0.
   </span>
  </p></blockquote>

 </div>


 <div class="refsect1 parameters" id="refsect1-memcache.addserver-parameters">
  <h3 class="title">Список параметров</h3>
  <dl>
   
    <dt><code class="parameter">host</code></dt>
    <dd>
     <span class="simpara">
      Параметр указывает на хост с запущенным сервисом memcached. Для параметра возможно установить
      значение наподобие <code class="literal">unix:///path/to/memcached.sock</code> для соединения с Unix-сокетом,
      но тогда для параметра <code class="parameter">port</code> потребуется установить
      значение <code class="literal">0</code>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">port</code></dt>
    <dd>
     <span class="simpara">
      Параметр указывает порт, по которому доступен сервис memcached. Для соединения с Unix-сокетом
      потребуется установить для параметра значение <code class="literal">0</code>.
     </span>
     <span class="simpara">
      Обратите внимание: значение параметра <code class="parameter">port</code> по умолчанию равно значению директивы
      <a href="memcache.ini.php#ini.memcache.default-port" class="link">memcache.default_port</a>.
      Поэтому при вызове метода рекомендуют указывать номер порта.
     </span>
    </dd>
   
   
    <dt><code class="parameter">persistent</code></dt>
    <dd>
     <span class="simpara">
      Устанавливать ли постоянное соединение. Значение по умолчанию равно <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">weight</code></dt>
    <dd>
     <span class="simpara">
      Необходимое количество созданных пакетов данных для этого сервера, что,
      в свою очередь, определяет вероятность выбора сервера. Вероятность
      рассчитывается относительно общего веса всех серверов.
     </span>
    </dd>
   
   
    <dt><code class="parameter">timeout</code></dt>
    <dd>
     <span class="simpara">
      Время ожидания в секундах для подключения к демону.
      Изменение значения по умолчанию в 1 секунду
      часто нивелирует преимущества кеширования на медленных соединениях.
     </span>
    </dd>
   
   
    <dt><code class="parameter">retry_interval</code></dt>
    <dd>
     <span class="simpara">
      Параметр управляет частотой проверки доступности отказавшего сервера, значение по умолчанию
      равно 15 секундам.
      Со значением &quot;-1&quot; попытки проверить доступность сервера
      не выполняются.
      Ни этот параметр, ни параметр <code class="parameter">persistent</code>
      не оказывают никакого влияния,
      если модуль загружен динамически через функцию
      <span class="function"><a href="function.dl.php" class="function">dl()</a></span>.
     </span>
     <span class="simpara">
      Каждая провалившаяся структура соединения содержит своё значение
      времени ожидания, и, пока оно не превышено, структура пропускается, после чего
      попробует выбрать другой сервер для обслуживания запроса. После
      истечения времени ожидания соединение либо удачно переустанавливается, либо
      помечается провалившимся и ожидает еще столько секунуд,
      сколько указали в параметре <code class="parameter">retry_interval</code>.
      Обычно эффект заключается в том, что каждый процесс веб-сервера
      ожидает секунд при обслуживании
      запроса, сколько указали в параметре <code class="parameter">retry_interval</code>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">status</code></dt>
    <dd>
     <span class="simpara">
      Параметр определяет, помечать ли сервер флагом &quot;онлайн&quot;. Одновременная установка
      значения <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> для этого параметра и значения -1 для параметра <code class="parameter">retry_interval</code>
      оставит отказавший сервер в пуле, чтобы не влиять на алгоритм распределения
      ключей.
      Запрос к этому серверу либо запустит механизм
      отказоустойчивости, либо
      сразу же прервётся с ошибкой, в зависимости от настройки
      директивы <code class="parameter">memcache.allow_failover</code>. Значение по умолчанию равно <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> —
      сервер активен и готов принимать запросы.
     </span>
    </dd>
   
   
    <dt><code class="parameter">failure_callback</code></dt>
    <dd>
     <span class="simpara">
      Пользовательская callback-функция, которая запустится
      при ошибке. Эта функция вызывается
      до запуска механизма отказоустойчивости. Функция принимает два
      параметра — имя хоста и порт отказавшего сервера.
     </span>
    </dd>
   
   
    <dt><code class="parameter">timeoutms</code></dt>
    <dd>
     <span class="simpara">

     </span>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-memcache.addserver-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="simpara">
   Функция возвращает <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, если выполнилась успешно, или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникла ошибка.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-memcache.addserver-examples">
  <h3 class="title">Примеры</h3>
 <div class="example" id="example-1">
  <p><strong>Пример #1 Пример добавления сервера в пул соединений методом <span class="function"><strong>Memcache::addServer()</strong></span></strong></p>
  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/* Объектно-ориентированный API */<br /></span><span style="color: #0000BB">$memcache </span><span style="color: #007700">= new </span><span style="color: #0000BB">Memcache</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$memcache</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addServer</span><span style="color: #007700">(</span><span style="color: #DD0000">'memcache_host'</span><span style="color: #007700">, </span><span style="color: #0000BB">11211</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$memcache</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addServer</span><span style="color: #007700">(</span><span style="color: #DD0000">'memcache_host2'</span><span style="color: #007700">, </span><span style="color: #0000BB">11211</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Процедурный API */<br /></span><span style="color: #0000BB">$memcache_obj </span><span style="color: #007700">= </span><span style="color: #0000BB">memcache_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">'memcache_host'</span><span style="color: #007700">, </span><span style="color: #0000BB">11211</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">memcache_add_server</span><span style="color: #007700">(</span><span style="color: #0000BB">$memcache_obj</span><span style="color: #007700">, </span><span style="color: #DD0000">'memcache_host2'</span><span style="color: #007700">, </span><span style="color: #0000BB">11211</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </div>


 <div class="refsect1 notes" id="refsect1-memcache.addserver-notes">
  <h3 class="title">Примечания</h3>
  <div class="warning"><strong class="warning">Внимание</strong>
   <p class="simpara">
    При пропуске параметра <code class="parameter">port</code> метод извлекает значение ini-директивы PHP
    <a href="memcache.ini.php#ini.memcache.default-port" class="link">memcache.default_port</a>.
    При изменении значения директивы в коде приложения поведение метода становится непредсказуемым. Поэтому лучше явно указывать порт при вызове метода.
   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-memcache.addserver-seealso">
  <h3 class="title">Смотрите также</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="memcache.connect.php" class="function" rel="rdfs-seeAlso">Memcache::connect()</a> - Открывает соединение с сервером memcached</span></li>
   <li><span class="function"><a href="memcache.pconnect.php" class="function" rel="rdfs-seeAlso">Memcache::pconnect()</a> - Открывает постоянное соединение с сервером memcached</span></li>
   <li><span class="function"><a href="memcache.close.php" class="function" rel="rdfs-seeAlso">Memcache::close()</a> - Закрывает соединение с сервером memcached</span></li>
   <li><span class="function"><a href="memcache.setserverparams.php" class="function" rel="rdfs-seeAlso">Memcache::setServerParams()</a> - Изменяет параметры и статус сервера во время выполнения</span></li>
   <li><span class="function"><a href="memcache.getserverstatus.php" class="function" rel="rdfs-seeAlso">Memcache::getServerStatus()</a> - Возвращает статус сервера</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>