PHP Memcache не работает после добавления нескольких серверов

Я создаю резервный CLI-скрипт на PHP, который использует класс Memcache, но у меня странная проблема...

Когда я подключаю несколько серверов к Memcache, метод get() всегда возвращает false, даже если запись существует, но когда я подключаю только один сервер, на котором размещена эта запись, возвращается ее значение...

Не работает:

$mc = new Memcache();
$mc->addServer('localhost', 11211);
$mc->addServer('localhost', 11212);
$mc->addServer('localhost', 11213);
var_dump($mc->get('someKey')); //bool(false)

Но это работает:

$mc = new Memcache();
$mc->addServer('localhost', 11211); 
var_dump($mc->get('someKey')); //Outputs actual value

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

Любая идея?


person Nikola Poša    schedule 19.04.2011    source источник


Ответы (1)


Попробуйте запустить этот код

<?php
error_reporting(E_ALL || E_NOTICE);

$mc = new Memcache();
$mc->addServer('localhost', 11211);
$mc->addServer('localhost', 11212);
$mc->addServer('localhost', 11213);

var_dump($mc->getExtendedStats());
var_dump($mc->get('someKey')); //bool(false)
?>

Кроме того, вы должны set() использовать свой ключ с ТОЧНО тем же пулом серверов, что и при get() его.

person Emmerman    schedule 19.04.2011
comment
Вывод длинный, но я получаю статистику для всех трех серверов в первом var_dump(). get() снова возвращает логическое значение false. - person Nikola Poša; 21.04.2011