Подтвердить что ты не робот

PHP-сессия и memcacheD

Всем известно, что существуют два расширения для memcache на PHP:

  • Memcache
  • Memcached

Вы можете использовать memcache расширение PHP как session_handler для PHP, например:

session.save_handler = memcache
session.save_path = "tcp://serv01:11211,tcp://serv02:11211,tcp://serv03:11211"

Или вы можете использовать memcached следующим образом:

session.save_handler = memcached
session.save_path = "serv01:11211,serv02:11211,serv03:11211"

Но как установить другие параметры для memcached, например:

  • Memcached:: OPT_DISTRIBUTION
  • Memcached:: OPT_RETRY_TIMEOUT
  • Memcached:: OPT_CONNECT_TIMEOUT

В PHP я сделаю так:

$cache = new Memcached();
$cache->addServer('serv01', 11211);
$cache->addServer('serv02', 11211);
$cache->addServer('serv03', 11211);
$cache->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5);
$cache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$cache->setOption(Memcached::OPT_CONNECT_TIMEOUT, 150);
$cache->setOption(Memcached::OPT_RETRY_TIMEOUT, 0);

Но до сих пор я не нашел никакой документации или примеров того, как устанавливать эти переменные, когда они используются session_handler.

4b9b3361

Ответ 1

После просмотра исходного кода как расширения PECL, так и самого libmemcached я наконец нашел свой ответ в комментарии блога автора расширения memcached.

http://zmievski.org/2009/01/new-memcached-extension

Я цитирую, если его блог исчезнет однажды:

Андрей сказал: @Ash, синтаксис пути сохранения сеанса не совсем такой же, как и в другом расширении memcache. Попробуйте:

session.save_path = "127.0.0.1:11211"

Ash Searle сказал: Есть ли какая-либо документация для синтаксиса - то есть она обрабатывает несколько серверов и дополнительные параметры, такие как предыдущие реализации memcache? (например, save_path = "127.0.0.1:11211?persistent=1&timeout=1&retry_interval=15" )

Андрей сказал: @Ash, нет, это не так продвинуто. На данный момент синтаксис является стандартным, который поддерживает libmemcached парсер: в основном, разделенный запятыми список имени хоста: записи порта, где: порт является необязательным.

ИЛИ

Rich Choy сказал: Есть ли ссылка в Интернете, которая объясняет каждый параметр подключения, который появляется после хоста: порт? Например, что означает "timeout = 1"?

Андрей сказал: @Rich, какое расширение вы используете?:) Mine не поддерживает эти дополнительные параметры, вы должны говорить о pecl/memcache.

и

Фрэнк Орсон сказал: 1) Поддерживает ли pecl/memcached поддержку UDP на клиенте? Я не мог найти информацию об этом. Я знаю, что pecl/memcache 3.0.4 поддерживает его.

2) Поддерживает ли pecl/memcached поддержку перехода на другой ресурс в клиенте?

Андрей сказал: Фрэнк, я работаю над следующей версией (2.0) расширения memcached. У Itll есть поддержка и репликация UDP (переход на другой ресурс).

Если вы проверяете исходный код версии 2, вы можете увидеть, например, что вы можете добавить в строку save_path строку "PERSISTENT =" и "--SERVER" ((которую я не знаю, как она будет использоваться)