Memcache::addServer

(PECL memcache >= 2.0.0)

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

Описание

bool Memcache::addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callable $failure_callback [, int $timeoutms ]]]]]]]] )

Memcache::addServer() добваляет сервер в пул соединений. Вы также можеет использовать функцию memcache_add_server().

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

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

Замечание:

Эта функция была добавлена в Memcache version 2.0.0.

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

host

Указывает на хост с запущеным сервисом memcached. Этот параметр можно задать в виде unix:///path/to/memcached.sock для использования сокетов Unix, но в таком случае будет необходимо установить параметр port равным 0.

port

Указывает порт, по которому доступен сервис memcached. Необходимо установить равным 0 если используются сокеты Unix.

Пожалуйста обратите внимание: port по умолчанию равен memcache.default_port. Поэтому рекомендуется всегда указывать номер порта при использовании этого метода.

persistent

Использовать ли постоянное соединение. По умолчанию TRUE.

weight

"Вес" сервера. Необходимое количество созданных пакетов данных для этого сервера, что, в свою очередь, определяет вероятность его выбора. Вероятность расчитывается относительно общего веса всех серверов.

timeout

Таймаут в секундах для установления соединения с сервером. Дважды подумайте предже чем устанавливать это значение больше чем 1. Это может нивелировать всю пользу от использования memcached.

retry_interval

Управляет частотой проверки доступности отказавшего сервера. По умолчанию 15 секунд. Если задать значение "-1", то попыток проверить джоступность сервера предприниматься не будет. Ни этот параметр, ни persistent не оказывают никакого влияния если расшерение загружено динамически функцией dl().

Каждая провалившаяся структура соединения имеет собственное значение таймаута и, пока он не пройдет, структура будет пропущена, после чего попробует выбрать другой сервер для обслуживания запроса. После того как время соединения истекло, оно либо удачно пересоединится, либо будет помечено провалившимся и будет ждать еще retry_interval секунд. Обычно эффект заключается в том, что каждый процесс веб-сервера будет ожидать retry_interval секунд при обслуживании запроса.

status

Определяет, должен ли сервер помечен флагом "активный". Установка этого параметра в FALSE и retry_interval в -1 позволит сохранить сервер в пуле, но не использовать его в алгоритме распределения ключей. Запрос к этому серверу либо запустит механизм обеспечения отказоустойчивости, либо сразу же прервется с ошибкой, в зависимости от настройки memcache.allow_failover. По умолчанию равно TRUE, что означает, что сервер активен и готов принимать запросы.

failure_callback

Позволяет пользователю задать функцию обратного вызова, которая запустится в случае какой либо ошибки. Эта функция будет вызвана раньше, чем будет запущен механизм обеспечения отказоустойчивости. Функция принимает два параметра, имя хоста и порт отказавшего сервера.

timeoutms

Примечания

Внимание

Когда значение port не указано, этот метод использует значение, указанное в директиве PHP ini memcache.default_port Если это значение было изменено где-нибудь еще в Вашем приложении, то это может дать непредсказуемые результаты. По этой причине лучше всегда явно указывать порт при вызове метода.

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования Memcache::addServer()

<?php

/* OO 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);

?>

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