(PECL memcache >= 2.1.0)
Memcache::setServerParams -- memcache_set_server_params — Изменяет параметры и статус сервера во время выполнения
$host,$port = 11211,$timeout = ?,$retry_interval = false ,$status = ?,$failure_callback = ?$memcache,$host,$port = 11211,$timeout = ?,$retry_interval = false ,$status = ?,$failure_callback = ?Метод Memcache::setServerParams() изменяет параметры сервера на лету.
Замечание:
Функцию добавили в модуль Memcache версии 2.1.0.
hostВ параметре указывается хост, на котором сервер memcached прослушивает соединения.
portВ параметре указывается порт, на котором сервер memcached прослушивает соединения.
timeoutВремя ожидания в секундах для подключения к демону. Изменение значения по умолчанию в 1 секунду часто нивелирует преимущества кеширования на медленных соединениях.
retry_interval
Параметр управляет частотой проверки доступности отказавшего сервера. Значение по умолчанию
равно 15 секундам.
Значение "-1" отключает автоматические повторные
проверки.
Ни этот параметр, ни параметр persistent
не влияют на работу метода,
если модуль загружается динамически функцией
dl() .
status
Параметр определяет, помечать ли сервер флагом "онлайн". Одновременная установка
значения false для этого параметра и значения -1 для параметра retry_interval
оставит отказавший сервер в пуле, чтобы не влиять на алгоритм распределения
ключей.
Запрос к этому серверу либо запустит механизм
отказоустойчивости, либо
сразу же прервётся с ошибкой, в зависимости от настройки
директивы memcache.allow_failover. Значение по умолчанию равно true —
сервер активен и готов принимать запросы.
failure_callbackПользовательская callback-функция, которая запустится при ошибке. Эта функция вызывается до запуска механизма отказоустойчивости. Функция принимает два параметра — имя хоста и порт отказавшего сервера.
Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка.
Пример #1 Пример изменения параметров и статуса сервера методом Memcache::setServerParams()
<?php
function _callback_memcache_failure($host, $port)
{
print "неудачное подключение memcache - '$host:$port'";
}
/* Объектно-ориентированный API */
$memcache = new Memcache();
// Добавить сервер в офлайн-режиме
$memcache->addServer('memcache_host', 11211, false, 1, 1, -1, false);
// Перевести сервер обратно в онлайн
$memcache->setServerParams('memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');
/* Процедурный API */
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_server_params($memcache_obj, 'memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');
?>