Добавляет сервер memcached в пул соединений

# Memcache::addServer

# memcache_add_server

(PECL memcache >= 2.0.0)

Memcache::addServer -- memcache_add_server — Добавляет сервер memcached в пул соединений

### Описание

function Memcache::addServer(
string `$host`,
int `$port` = 11211,
bool `$persistent` = ?,
int `$weight` = ?,
int `$timeout` = ?,
int `$retry_interval` = ?,
bool `$status` = ?,
callable `$failure_callback` = ?,
int `$timeoutms` = ?
): bool
function memcache_add_server(
Memcache `$memcache`,
string `$host`,
int `$port` = 11211,
bool `$persistent` = ?,
int `$weight` = ?,
int `$timeout` = ?,
int `$retry_interval` = ?,
bool `$status` = ?,
callable `$failure_callback` = ?,
int `$timeoutms` = ?
): bool

Метод Memcache::addServer() добавляет сервер в пул соединений.

В отличие от методов Memcache::connect() и Memcache::pconnect() при вызове этого метода сетевое соединение не устанавливается, пока не потребуется. Поэтому при добавлении большого количества серверов в пул производительность не снижается, поскольку, возможно, соединения не потребуются.

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

> Замечание: Метод добавили в модуль Memcache версии 2.0.0.

### Список параметров

`host`
  Параметр указывает на хост с запущенным сервисом memcached. Для параметра возможно установить значение наподобие `unix:///path/to/memcached.sock` для соединения с Unix-сокетом, но тогда для параметра `port` потребуется установить значение `0`.
`port`
  Параметр указывает порт, по которому доступен сервис memcached. Для соединения с Unix-сокетом потребуется установить для параметра значение `0`. Обратите внимание: значение параметра `port` по умолчанию равно значению директивы memcache.default_port. Поэтому при вызове метода рекомендуют указывать номер порта.
`persistent`
  Устанавливать ли постоянное соединение. Значение по умолчанию равно `true`.
`weight`
  Необходимое количество созданных пакетов данных для этого сервера, что, в свою очередь, определяет вероятность выбора сервера. Вероятность рассчитывается относительно общего веса всех серверов.
`timeout`
  Время ожидания в секундах для подключения к демону. Изменение значения по умолчанию в 1 секунду часто нивелирует преимущества кеширования на медленных соединениях.
`retry_interval`
  Параметр управляет частотой проверки доступности отказавшего сервера, значение по умолчанию равно 15 секундам. Со значением "-1" попытки проверить доступность сервера не выполняются. Ни этот параметр, ни параметр `persistent` не оказывают никакого влияния, если модуль загружен динамически через функцию dl(). Каждая провалившаяся структура соединения содержит своё значение времени ожидания, и, пока оно не превышено, структура пропускается, после чего попробует выбрать другой сервер для обслуживания запроса. После истечения времени ожидания соединение либо удачно переустанавливается, либо помечается провалившимся и ожидает еще столько секунуд, сколько указали в параметре `retry_interval`. Обычно эффект заключается в том, что каждый процесс веб-сервера ожидает секунд при обслуживании запроса, сколько указали в параметре `retry_interval`.
`status`
  Параметр определяет, помечать ли сервер флагом "онлайн". Одновременная установка значения `false` для этого параметра и значения -1 для параметра `retry_interval` оставит отказавший сервер в пуле, чтобы не влиять на алгоритм распределения ключей. Запрос к этому серверу либо запустит механизм отказоустойчивости, либо сразу же прервётся с ошибкой, в зависимости от настройки директивы `memcache.allow_failover`. Значение по умолчанию равно `true` — сервер активен и готов принимать запросы.
`failure_callback`
  Пользовательская callback-функция, которая запустится при ошибке. Эта функция вызывается до запуска механизма отказоустойчивости. Функция принимает два параметра — имя хоста и порт отказавшего сервера.
`timeoutms`

### Возвращаемые значения

Функция возвращает `true`, если выполнилась успешно, или `false`, если возникла ошибка.

### Примеры

Пример #1 Пример добавления сервера в пул соединений методом Memcache::addServer()

    <?php

    /* Объектно-ориентированный API */
    $memcache = new Memcache;
    $memcache->addServer('memcache_host', 11211);
    $memcache->addServer('memcache_host2', 11211);

    /* Процедурный API */
    $memcache_obj = memcache_connect('memcache_host', 11211);
    memcache_add_server($memcache_obj, 'memcache_host2', 11211);

    ?>

### Примечания

Внимание

При пропуске параметра `port` метод извлекает значение ini-директивы PHP memcache.default_port. При изменении значения директивы в коде приложения поведение метода становится непредсказуемым. Поэтому лучше явно указывать порт при вызове метода.

### Смотрите также

- Memcache::connect() - Открывает соединение с сервером memcached
- Memcache::pconnect() - Открывает постоянное соединение с сервером memcached
- Memcache::close() - Закрывает соединение с сервером memcached
- Memcache::setServerParams() - Изменяет параметры и статус сервера во время выполнения
- Memcache::getServerStatus() - Возвращает статус сервера

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open