(PECL memcache >= 2.0.0)
Memcache::addServer -- memcache_add_server — Добавляет сервер memcached в пул соединений
$host,$port = 11211,$persistent = ?,$weight = ?,$timeout = ?,$retry_interval = ?,$status = ?,$failure_callback = ?,$timeoutms = ?$memcache,$host,$port = 11211,$persistent = ?,$weight = ?,$timeout = ?,$retry_interval = ?,$status = ?,$failure_callback = ?,$timeoutms = ?Метод Memcache::addServer() добавляет сервер в пул соединений.
В отличие от методов Memcache::connect() и Memcache::pconnect() при вызове этого метода сетевое соединение не устанавливается, пока не потребуется. Поэтому при добавлении большого количества серверов в пул производительность не снижается, поскольку, возможно, соединения не потребуются.
Потребность в отказоустойчивости возникает на любом этапе в любом методе, и если при этом хотя бы один сервер из пула окажется доступен, пользователь не получит оповещения. Любой тип ошибки сокета или сервера Memcached, за исключением ошибки переполнения памяти, может включить протокол обеспечения отказоустойчивости. Стандартные клиентские ошибки наподобие добавления существующего ключа не вызовут такого поведения.
Замечание: Метод добавили в модуль Memcache версии 2.0.0.
hostunix:///path/to/memcached.sock для соединения с Unix-сокетом,
но тогда для параметра port потребуется установить
значение 0.
port0.
Обратите внимание: значение параметра port по умолчанию равно значению директивы
memcache.default_port.
Поэтому при вызове метода рекомендуют указывать номер порта.
persistenttrue.
weighttimeoutretry_intervalpersistent
не оказывают никакого влияния,
если модуль загружен динамически через функцию
dl().
Каждая провалившаяся структура соединения содержит своё значение
времени ожидания, и, пока оно не превышено, структура пропускается, после чего
попробует выбрать другой сервер для обслуживания запроса. После
истечения времени ожидания соединение либо удачно переустанавливается, либо
помечается провалившимся и ожидает еще столько секунуд,
сколько указали в параметре retry_interval.
Обычно эффект заключается в том, что каждый процесс веб-сервера
ожидает секунд при обслуживании
запроса, сколько указали в параметре retry_interval.
statusfalse для этого параметра и значения -1 для параметра retry_interval
оставит отказавший сервер в пуле, чтобы не влиять на алгоритм распределения
ключей.
Запрос к этому серверу либо запустит механизм
отказоустойчивости, либо
сразу же прервётся с ошибкой, в зависимости от настройки
директивы memcache.allow_failover. Значение по умолчанию равно true —
сервер активен и готов принимать запросы.
failure_callbacktimeoutms
Функция возвращает 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.
При изменении значения директивы в коде приложения поведение метода становится непредсказуемым. Поэтому лучше явно указывать порт при вызове метода.