Альтернативный пакет cache

Вопросы, связанные с разработкой пакетов Limb3

Модератор: phpBB2 - administrators

Сообщение pachanga » Вс окт 26, 2008 10:28 am

korchasa писал(а):
pachanga писал(а):Насколько я понял, сделали коммит в репозиторий: пакет cache2. Одно замечание - может имеет смысл в названиях классов этого пакета также 2 дописывать, т.е lmbCache2?

А смысл?


Это просто хороший стиль для языка, где пока нет namespace'ов. Кстати, в PEAR используется такая практика.
Аватара пользователя
pachanga
LIMB Developer
 
Сообщения: 4504
Зарегистрирован: Вс июн 06, 2004 7:29 pm
Откуда: Russia, Penza

Сообщение hidrarg » Пн окт 27, 2008 11:46 am

добавлю increment/decrement в lmbCacheMemcacheConnection?

Кстати, столкнулся со старанным поведением increment в PHP 5.2.6/memcached 1.2.5.
В документации написано "Returns new item's value on success or FALSE on failure.", а в указанной конфигурации функция возвращает "0".
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение hidrarg » Пн окт 27, 2008 12:49 pm

добавил increment/decrement.
добавил параметр timeout в метод delete
поравил функцию lmbCache::createConnection
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение korchasa » Пн окт 27, 2008 1:22 pm

pachanga писал(а):Это просто хороший стиль для языка, где пока нет namespace'ов. Кстати, в PEAR используется такая практика.

Лады, сегодня поправлю.

hidrarg писал(а):добавил параметр timeout в метод delete

Я против, т.к. мы не сможем это повторить для других соединений. Если надо такой delete, то проще отнаследоваться или сделать отнаследованный MemcacheHardcoreConnection(не горазд на названия), чтобы пользователь явно понимал, что сменить хранилище уже, возможно, не выйдет.

Может пока не будем вводить safeIncrement()/selfDecrement()? Т.е. дождемся факта дублирования кода. В любом случае это лучше реализовывать через проверку того, что вернул increment, т.к. иначе будет лишний запрос к кэшу.
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение hidrarg » Пн окт 27, 2008 2:06 pm

korchasa писал(а):
hidrarg писал(а):добавил параметр timeout в метод delete

Я против, т.к. мы не сможем это повторить для других соединений. Если надо такой delete, то проще отнаследоваться или сделать отнаследованный MemcacheHardcoreConnection(не горазд на названия), чтобы пользователь явно понимал, что сменить хранилище уже, возможно, не выйдет.

Не вижу проблемы. Параметр на мой взгляд нужный. Я около часа потратил на выяснение, почему тесты не проходят. Оказалось memcache не удалял значение при вызове delete.
korchasa писал(а):В любом случае это лучше реализовывать через проверку того, что вернул increment, т.к. иначе будет лишний запрос к кэшу.

Я сначала сделал через такую проверку, но как я писал выше на одном сервере с PHP 5.2.6/memcached 1.2.5 в случае неудачи инкремента функция возвращала 0 вместо false.
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение korchasa » Пн окт 27, 2008 2:50 pm

hidrarg писал(а):Не вижу проблемы. Параметр на мой взгляд нужный.

Нужный, я согласен. Соединения я вводил с единственной целью - сравнять интерфейс и поведение разных хранилищ. Теперь они опять различны.

hidrarg писал(а):Я около часа потратил на выяснение, почему тесты не проходят. Оказалось memcache не удалял значение при вызове delete.

Какой именно тест не проходил?

Я сначала сделал через такую проверку, но как я писал выше на одном сервере с PHP 5.2.6/memcached 1.2.5 в случае неудачи инкремента функция возвращала 0 вместо false.

Если найдется сервер на котором нет PHP, то придется переписывать limb на питон?
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение hidrarg » Пн окт 27, 2008 3:13 pm

korchasa писал(а):
hidrarg писал(а):Я около часа потратил на выяснение, почему тесты не проходят. Оказалось memcache не удалял значение при вызове delete.

Какой именно тест не проходил?


$this->cache->delete($id1);
$this->assertTrue($this->cache->add($id1, $v1 = 'value1'));

korchasa писал(а):
Я сначала сделал через такую проверку, но как я писал выше на одном сервере с PHP 5.2.6/memcached 1.2.5 в случае неудачи инкремента функция возвращала 0 вместо false.

Если найдется сервер на котором нет PHP, то придется переписывать limb на питон?

)))) С этим, наверное, ты прав. Меня смутило то, что php последней версии (из 5.2). На 5.2.3 возвращает false.
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение korchasa » Пн окт 27, 2008 3:40 pm

hidrarg писал(а):
korchasa писал(а):Какой именно тест не проходил?

$this->cache->delete($id1);
$this->assertTrue($this->cache->add($id1, $v1 = 'value1'));

Настройки memcached покажи. Попробуй поставить задержку после delete.
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение hidrarg » Пн окт 27, 2008 3:52 pm

korchasa писал(а):Настройки memcached покажи. Попробуй поставить задержку после delete.

Код: Выделить всё
MEMCACHED_BINARY="/usr/bin/memcached"
MEMUSAGE="64"
MEMCACHED_RUNAS="memcached"
MAXCONN="1024"
LISTENON=""
PORT="11211"
PIDBASE="/var/run/memcached/memcached"
MISC_OPTS=""

Все дефолтные.
Да и дело не в этом. Если уж так мешает этот параметр, все равно необходимо сделать хотябы так:
return $this->_getMemcache()->delete($this->_resolveKey($key), 0);

UP:
нет. Так делать тоже нельзя. Это снизит производительность memcache. Параметр нужен.
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение korchasa » Пн окт 27, 2008 4:06 pm

hidrarg писал(а):
Код: Выделить всё
MEMCACHED_BINARY="/usr/bin/memcached"
MEMUSAGE="64"
MEMCACHED_RUNAS="memcached"
MAXCONN="1024"
LISTENON=""
PORT="11211"
PIDBASE="/var/run/memcached/memcached"
MISC_OPTS=""

Все дефолтные.

Ты сейчас удивишься, но это не настройки memcached, это настройки того, кто его запустил. Сделай "ps aux | grep memcached".

hidrarg писал(а):Да и дело не в этом. Если уж так мешает этот параметр, все равно необходимо сделать хотябы так:
return $this->_getMemcache()->delete($this->_resolveKey($key), 0);

Т.е. ты думаешь что delete($key) и delete($key, 0) ведут себя по разному? Судя по протоколу таки нет. Если описание протокола memcached неверно, то надо это отобразить тестом хотя бы. Тестом на протокол. http://code.sixapart.com/svn/memcached/ ... otocol.txt

hidrarg писал(а):UP: нет. Так делать тоже нельзя. Это снизит производительность memcache. Параметр нужен.

Что снизит производительность? То, что ключ не указан?
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение hidrarg » Пн окт 27, 2008 4:22 pm

korchasa писал(а):Ты сейчас удивишься, но это не настройки memcached, это настройки того, кто его запустил. Сделай "ps aux | grep memcached".


/usr/bin/memcached -d -p 11211 -m 64 -c 1024 -u memcached -P /var/run/memcached/memcached-11211.pid
Я бы не сказал что много новой информации.
korchasa писал(а):
hidrarg писал(а):Да и дело не в этом. Если уж так мешает этот параметр, все равно необходимо сделать хотябы так:
return $this->_getMemcache()->delete($this->_resolveKey($key), 0);

Т.е. ты думаешь что delete($key) и delete($key, 0) ведут себя по разному?

В указанной конфигурации сервера - да.
hidrarg
LIMB Addicted
 
Сообщения: 54
Зарегистрирован: Чт май 08, 2008 1:17 pm

Сообщение conf » Чт окт 30, 2008 5:55 pm

Добавил поддержку тулкита для cache2, по умолчанию используется lmbCache (стоит заменить на lmbMintCache?).
И еще, в cache была такая вещь как lmbCacheGroupDecorator, т.е. возможность группировать кэши в группы, что-нибудь подобное ожидается здесь?
Опыт - это то, что мы получаем, когда не получаем того, что хотим.
http://www.shelfari.com/shein_alexey/shelf - лучшие книги для программистов.
Аватара пользователя
conf
LIMB Addicted
 
Сообщения: 570
Зарегистрирован: Вт мар 25, 2008 6:41 pm
Откуда: Tashkent, Uzbekistan

Сообщение korchasa » Чт окт 30, 2008 6:06 pm

conf писал(а):Добавил поддержку тулкита для cache2, по умолчанию используется lmbCache (стоит заменить на lmbMintCache?).

О! Спасиб.

И еще, в cache была такая вещь как lmbCacheGroupDecorator, т.е. возможность группировать кэши в группы, что-нибудь подобное ожидается здесь?

Я хочу сделать тэгирование. В принципе, это покроет функционал групп.
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение korchasa » Вт ноя 11, 2008 1:43 pm

conf писал(а):Добавил поддержку тулкита для cache2, по умолчанию используется lmbCache (стоит заменить на lmbMintCache?).

Я немножко тулкит поломал, позже исправлю. Насчет того, что использовать - пока не знаю. lmbMintCache медленнее, но надежнее. Возможно стоит его использовать. Просто я пока не знаю, как лучше описывать цепочки кэшей. Например, как сделать тэгируемый mint-кэш, без большого оверхеда по операциям, на основе конфига.

И еще, в cache была такая вещь как lmbCacheGroupDecorator, т.е. возможность группировать кэши в группы, что-нибудь подобное ожидается здесь?

lmbTaggableCache сделал. Работает с любым соединением.
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение korchasa » Вт ноя 11, 2008 3:06 pm

korchasa писал(а):... Насчет того, что использовать - пока не знаю. lmbMintCache медленнее, но надежнее. Возможно стоит его использовать. Просто я пока не знаю, как лучше описывать цепочки кэшей. Например, как сделать тэгируемый mint-кэш, без большого оверхеда по операциям, на основе конфига.

В общем пока думаю сделать как-то так:
Код: Выделить всё
//cache.conf.php
$conf['default'] = 'memcache://localhost';
$conf['template'] = 'mint://?conn=default&default_ttl=300';

//запрос кэша
lmbToolkit::instance()->getCache('template')->get('news');


соответственно, если нам нужно выводить на экран информацию о запросах:
Код: Выделить всё
//где-то вначале работы (фильтр в цепочке)
$this->getConf('cache')->set('template', 'logged://conn=template&logger=memory');

//где-то вконце, где надо вывести статистику по запросам (тоже фильтр в цепочке)
$this->getCache('template')->getStatistic();
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Пред.След.

Вернуться в Limb3 разработка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron