Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > memcache на несколько серверов


Автор: DooZ 10.7.2009, 21:47
Подскажите такую вещь
есть два сервера:
сервер1
сервер2

на каждом происходит коннект к мембкешам вот в таком виде:
$memcache = new Memcache;
$memcache->addServer('сервер1', 11211);
$memcache->addServer('сервер2', 11211);

но данные записанные на одном сервере, почемуто иногда (или всегда, не пойму) не видны на втором
с чем это может быть связанно?

как правильно вообще работать с memcache если нужно использовать совместно память на двух серверах?

Добавлено через 10 минут и 2 секунды
вообщем для работы мемкеша на нескольких серверах, достаточно просто сделать всем нужным серверам: 
$memcache->addServer('сервер1', 11211);
$memcache->addServer('сервер2', 11211);
$memcache->addServer('серверN', 11211);
не зависимо в какой последовательности???
или надо как-то иначе работать с ним?

просто если я меняю последовательности, то данные вообще не видно

подскажите, а лучше покажите реальный пример, как правильно работать с memcache на нескольких серверах

спасибо

Автор: DooZ 11.7.2009, 13:03
неужели никто не работал с memcache больше чем на одном сервере?  smile 

Автор: DooZ 11.7.2009, 13:49
вот реальный пример, что не работает

на сервере1 запускается такой скрипт:

Код

<?php

$memcache = new Memcache;
$memcache->addServer('сервер2', 11211);
$memcache->addServer('127.0.0.1', 11211);

$xxx = md5("zz_raw_11_1_1_2009-07-11");
$memcache->add($xxx, 0, false, 0);
$memcache->increment($xxx, 1);

?>


т.е. после запуска, скрипт должен записать данные в кеш, на один из серверов (на удаленный или свой)

на сервере2 я запускаю вот такой проверочный скрипт

Код

<?php

$memcache = new Memcache;
$memcache->addServer('127.0.0.1', 11211);
$memcache->addServer('сервер1', 11211);

$xxx = md5("zz_raw_11_1_1_2009-07-11");
print "-> " . $memcache->get($xxx) . "\n";

?>


и НИЧЕГО не выводится

если я УБИРАЮ строку: $memcache->addServer('сервер1', 11211); т.е. коннектимся только к локальному хосту, то все ок

вопрос: где грабли? почему мемкеш не определяет куда он засунул ключ??? как быть? уже всю голову сломал

Автор: DooZ 16.7.2009, 16:40
вообщем разобрался сам

смысл в том, что у меня стояли разные версии модуля memcache, на одном версия 2 какая-то, а втором 3.04 соответственно по разному формировались ключи для хешей где оставлять на серваке
можно еще принудительно поставить настройки в файле /etc/php.d/memcache.ini но вроде и так работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)