PHP Memcache не работает после добавления нескольких серверов - PullRequest
1 голос
/ 19 апреля 2011

Я создаю некоторый резервный скрипт 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-запрос с использованием браузера.

Есть идеи?

1 Ответ

0 голосов
/ 19 апреля 2011

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

<?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() его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...