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

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

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

Сообщение CM-Z » Чт дек 11, 2008 4:12 pm

conf писал(а):теги

Ага. Они самые. Точнее в первом cache они были группами.
Но теперь уже всё переделано, переписано и работает, как надо, и в $params нужды нет.
CM-Z
LIMB Addicted
 
Сообщения: 164
Зарегистрирован: Сб авг 04, 2007 11:23 pm

Сообщение korchasa » Пн дек 15, 2008 2:19 pm

conf писал(а):
serega писал(а):
korchasa писал(а):
serega писал(а):Хм, а может в cache2 все-таки ввести параметр $params. Но ttl все равно оставить?

Ты уже придумал применение? :D

Пусть CM-Z дасть пример параметра, кроме ttl

теги

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

Сообщение conf » Пн дек 15, 2008 2:42 pm

korchasa писал(а):Бессмысленно, ибо все равно придется все вызовы исправлять.

Можно хотя бы привести к общему стандарту
Код: Выделить всё
function set($key, $value, $ttl [, $other_params])

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

Сообщение korchasa » Пн дек 15, 2008 2:46 pm

conf писал(а):
korchasa писал(а):Бессмысленно, ибо все равно придется все вызовы исправлять.

Можно хотя бы привести к общему стандарту
Код: Выделить всё
function set($key, $value, $ttl [, $other_params])

а то taggableCache выбивается...

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

Сообщение conf » Вт дек 23, 2008 6:25 pm

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

Сообщение korchasa » Вт дек 23, 2008 6:35 pm

conf писал(а):Ну так что, проект заглох? Я бы хотел предложить свою помощь, только не знаю с чего здесь начать. Мой интерес в этом пакете - стабильная работа с тегами при использовании memcached.

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

Сообщение conf » Ср дек 24, 2008 3:45 pm

Закоммитил изменения в cache2, среди прочего потер метод tearDownAll() в тестах (содержимое переместил в tearDown) - он вообще вызывался кем-нибудь? В tests_runner и simpleTest я его не нашел...
Далее, есть ли ночные билды на проекты в инкубаторе? Если есть, то где можно посмотреть результаты сборок?
Плюс на сервере сборок отключены apc и memcached, соответственно тесты на них каждый раз не выполняются, что тоже не есть гуд.

P.S.
Код: Выделить всё
-- changed order of $ttl and $tags_keys params in lmbTaggableCache::set() to comply other cache engines
-- added lmbTaggableCache::add() similar to set() function + test cases
-- contents of lmbCacheConnectionTest::tearDownAll() were moved to tearDown()
-- fixed useless slash replaces in LIMB_VAR_DIR
Опыт - это то, что мы получаем, когда не получаем того, что хотим.
http://www.shelfari.com/shein_alexey/shelf - лучшие книги для программистов.
Аватара пользователя
conf
LIMB Addicted
 
Сообщения: 570
Зарегистрирован: Вт мар 25, 2008 6:41 pm
Откуда: Tashkent, Uzbekistan

Сообщение conf » Пт янв 09, 2009 2:14 pm

korchasa писал(а):
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. Параметр нужен.

Что снизит производительность? То, что ключ не указан?


У меня такая же проблема :(
Тест:
Код: Выделить всё
  function testAddAfterDelete() {
    $id = $this->_getUniqueId();
    $this->assertTrue($this->cache->add($id, $v = 'value'));

    $this->assertEqual($this->cache->get($id), $v);

    $this->assertTrue($this->cache->delete($id));

    $this->assertNull($this->cache->get($id));

    $this->assertTrue($this->cache->add($id, $v = 'another value'));

    $this->assertEqual($this->cache->get($id), $v);
  }

Результат:
Код: Выделить всё
conf@conf:~/limb/trunk/limb$ php runtests.php --include-path /home/conf/limb/incubator/ /home/conf/limb/incubator/limb/cache2/
=========== Group test in "/home/conf/limb/incubator/limb/cache2" ===========
1 of 16 done(lmbCacheApcConnectionTest)
2 of 16 done(lmbCacheDbConnectionTest)
3 of 16 done(lmbCacheFileConnectionTest)
4 of 16 done(lmbCacheFileConnectionWithoutSerializationTest)
1)  at [/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheMemcacheConnectionTest.class.php line 35]
   in testAddAfterDelete
   in lmbCacheMemcacheConnectionTest
   in lmbCacheMemcacheConnectionTest.class.php
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases/drivers"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests"
   in Group test in "/home/conf/limb/incubator/limb/cache2"
2) Equal expectation fails as [NULL] does not match [String: another value] at [/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheMemcacheConnectionTest.class.php line 37]
   in testAddAfterDelete
   in lmbCacheMemcacheConnectionTest
   in lmbCacheMemcacheConnectionTest.class.php
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases/drivers"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests"
   in Group test in "/home/conf/limb/incubator/limb/cache2"
3)  at [/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheConnectionTest.class.php line 257]
   in testUnlock
   in lmbCacheMemcacheConnectionTest
   in lmbCacheMemcacheConnectionTest.class.php
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases/drivers"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests/cases"
   in Group test in "/home/conf/limb/incubator/limb/cache2/tests"
   in Group test in "/home/conf/limb/incubator/limb/cache2"
5 of 16 done(lmbCacheMemcacheConnectionTest)
6 of 16 done(lmbCacheMemoryConnectionTest)
7 of 16 done(lmbCacheMemoryConnectionWithoutSerializationTest)
8 of 16 done(lmbCacheSessionConnectionTest)
9 of 16 done(lmbCacheSessionConnectionWithoutSerializationTest)
10 of 16 done(lmbCacheLogFileTest)
11 of 16 done(lmbCacheLogMemoryTest)
12 of 16 done(lmbCacheFactoryTest)
13 of 16 done(lmbCacheToolkitTest)
14 of 16 done(lmbMintCacheTest)
15 of 16 done(lmbTaggableCacheTest)
16 of 16 done(CacheTagTest)
FAILURES!!!
Test cases run: 16/16, Passes: 417, Failures: 3, Exceptions: 0
Tests time: 49.956 sec.
Tests memory usage: 6.499 Mb.
=========== FAILED TESTS  ===========
/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheMemcacheConnectionTest.class.php:35
/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheMemcacheConnectionTest.class.php:37
/home/conf/limb/incubator/limb/cache2/tests/cases/drivers/lmbCacheConnectionTest.class.php:257
=========== TESTS HAD ERRORS(see above) ===========


Если же добавить параметр таймаут в delete, то тесты проходят нормально.

2hidrarg: а насколько проблемы с производительностью с этим параметром?
2all: как все это фиксить?

P.S. Пересел на убунту наконец :)
Конфигурация:
Код: Выделить всё
conf@conf:~/limb/trunk/limb$ apache2 -v && php -v && ps ax | grep memcached
Server version: Apache/2.2.9 (Ubuntu)
Server built:   Sep 19 2008 13:43:21
PHP 5.2.6-2ubuntu4 with Suhosin-Patch 0.9.6.2 (cli) (built: Oct 14 2008 20:06:32)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans
4833 ?        S      0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1
13362 pts/0    R+     0:00 grep memcached
conf@conf:~/limb/trunk/limb$
Опыт - это то, что мы получаем, когда не получаем того, что хотим.
http://www.shelfari.com/shein_alexey/shelf - лучшие книги для программистов.
Аватара пользователя
conf
LIMB Addicted
 
Сообщения: 570
Зарегистрирован: Вт мар 25, 2008 6:41 pm
Откуда: Tashkent, Uzbekistan

Сообщение korchasa » Пт янв 09, 2009 9:29 pm

Давай тогда сделаем что-то типа:
Код: Выделить всё
function delete($key, $ttl = 0)
{
  return $this->_getMemcache()->delete($this->_resolveKey($key), $ttl);
}

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

Сообщение pachanga » Пт янв 09, 2009 10:05 pm

conf писал(а):PHP 5.2.6-2ubuntu4 with Suhosin-Patch 0.9.6.2 (cli) (built: Oct 14 2008 20:06:32)


Оффтоп, но все же - у меня этот самый патченный PHP время от времени выпадал в корку, поэтому пришлось собрать вручную из исходников.
Аватара пользователя
pachanga
LIMB Developer
 
Сообщения: 4504
Зарегистрирован: Вс июн 06, 2004 7:29 pm
Откуда: Russia, Penza

Сообщение conf » Пн янв 12, 2009 9:54 am

korchasa писал(а):Давай тогда сделаем что-то типа:
Код: Выделить всё
function delete($key, $ttl = 0)
{
  return $this->_getMemcache()->delete($this->_resolveKey($key), $ttl);
}

Можешь прогнать? Боюсь, что логгеры отломаются.

Прогнал, вроде все ок.

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

Сообщение conf » Ср мар 11, 2009 3:37 pm

Нашел еще баг в реализации тегов: если ключ кэша совпадает с тегом, все падает.
Код: Выделить всё
  function testTagCoincidesWithKey()
  {
    $this->assertTrue($this->cache->add($key = $this->_createId(), $value = 'value', null, $key));
    $this->assertEqual($this->cache->get($key), $value);
  }

Код: Выделить всё
conf@conf:~/limb/trunk$ ./runtests.php cache2
=========== Group test in "/home/conf/limb/trunk/cache2" ===========
1 of 15 done(lmbCacheApcConnectionTest)
2 of 15 done(lmbCacheDbConnectionTest)
3 of 15 done(lmbCacheFileConnectionTest)
4 of 15 done(lmbCacheFileConnectionWithoutSerializationTest)
5 of 15 done(lmbCacheMemcacheConnectionTest)
6 of 15 done(lmbCacheMemoryConnectionTest)
7 of 15 done(lmbCacheMemoryConnectionWithoutSerializationTest)
8 of 15 done(lmbCacheSessionConnectionTest)
9 of 15 done(lmbCacheSessionConnectionWithoutSerializationTest)
10 of 15 done(lmbCacheLogFileTest)
11 of 15 done(lmbCacheLogMemoryTest)
12 of 15 done(lmbCacheFactoryTest)
13 of 15 done(lmbCacheToolkitTest)
14 of 15 done(lmbMintCacheTest)
1)  at [/home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php line 38]
   in testTagCoincidesWithKey
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
E_WARNING: array_keys(): The first argument should be an array in /home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php on line 32
E_WARNING: Invalid argument supplied for foreach() in /home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php on line 34
2) Equal expectation fails as [NULL] does not match [String: value] at [/home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php line 39]
   in testTagCoincidesWithKey
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
Exception 1!
Unexpected PHP error [array_keys(): The first argument should be an array] severity [E_WARNING] in [/home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php line 32]
   in testTagCoincidesWithKey
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
Exception 2!
Unexpected PHP error [Invalid argument supplied for foreach()] severity [E_WARNING] in [/home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php line 34]
   in testTagCoincidesWithKey
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
15 of 15 done(lmbTaggableCacheTest)
FAILURES!!!
Test cases run: 15/15, Passes: 402, Failures: 2, Exceptions: 2
Tests time: 47.381 sec.
Tests memory usage: 3.547 Mb.
=========== FAILED TESTS  ===========
[FLR] /home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php:38
[FLR] /home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php:39
[ERR] /home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php:32
[ERR] /home/conf/limb/trunk/cache2/src/lmbTaggableCache.class.php:34
=========== TESTS HAD ERRORS(see above) ===========
Опыт - это то, что мы получаем, когда не получаем того, что хотим.
http://www.shelfari.com/shein_alexey/shelf - лучшие книги для программистов.
Аватара пользователя
conf
LIMB Addicted
 
Сообщения: 570
Зарегистрирован: Вт мар 25, 2008 6:41 pm
Откуда: Tashkent, Uzbekistan

Сообщение korchasa » Ср мар 11, 2009 3:43 pm

conf писал(а):Нашел еще баг в реализации тегов: если ключ кэша совпадает с тегом, все

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

Сообщение korchasa » Ср мар 11, 2009 4:57 pm

conf писал(а):Нашел еще баг в реализации тегов: если ключ кэша совпадает с тегом, все

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

Сообщение conf » Чт мар 12, 2009 10:52 am

korchasa писал(а):
conf писал(а):Нашел еще баг в реализации тегов: если ключ кэша совпадает с тегом, все

Поправил

Спасибо за оперативность! :)
Закоммитил еще некоторые изменения для тегов:
-- добавил приведение типа к массиву из-за багов с мемкешем
-- пофиксил тесты

Вообще мемкеш с тегами все еще глючит :(
Код: Выделить всё
  function setUp()
  {
    $this->cache = new lmbTaggableCache(lmbCacheFactory::createConnection('memcache://localhost/'));
  }

Код: Выделить всё
conf@conf:~/limb/trunk$ ./runtests.php cache2
=========== Group test in "/home/conf/limb/trunk/cache2" ===========
1 of 15 done(lmbCacheApcConnectionTest)
2 of 15 done(lmbCacheDbConnectionTest)
3 of 15 done(lmbCacheFileConnectionTest)
4 of 15 done(lmbCacheFileConnectionWithoutSerializationTest)
5 of 15 done(lmbCacheMemcacheConnectionTest)
6 of 15 done(lmbCacheMemoryConnectionTest)
7 of 15 done(lmbCacheMemoryConnectionWithoutSerializationTest)
8 of 15 done(lmbCacheSessionConnectionTest)
9 of 15 done(lmbCacheSessionConnectionWithoutSerializationTest)
10 of 15 done(lmbCacheLogFileTest)
11 of 15 done(lmbCacheLogMemoryTest)
12 of 15 done(lmbCacheFactoryTest)
13 of 15 done(lmbCacheToolkitTest)
14 of 15 done(lmbMintCacheTest)
1) [String: value] should be null at [/home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php line 43]
   in testDeleteByTags_SingleTag
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
2) [String: value] should be null at [/home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php line 52]
   in testDeleteByTags_MultipleTag
   in lmbTaggableCacheTest
   in lmbTaggableCacheTest.class.php
   in Group test in "/home/conf/limb/trunk/cache2/tests/cases"
   in Group test in "/home/conf/limb/trunk/cache2/tests"
   in Group test in "/home/conf/limb/trunk/cache2"
15 of 15 done(lmbTaggableCacheTest)
FAILURES!!!
Test cases run: 15/15, Passes: 402, Failures: 2, Exceptions: 0
Tests time: 52.59 sec.
Tests memory usage: 3.55 Mb.
=========== FAILED TESTS  ===========
[FLR] /home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php:43
[FLR] /home/conf/limb/trunk/cache2/tests/cases/lmbTaggableCacheTest.class.php:52
=========== TESTS HAD ERRORS(see above) ===========

С APC и файлами все нормально.
Опыт - это то, что мы получаем, когда не получаем того, что хотим.
http://www.shelfari.com/shein_alexey/shelf - лучшие книги для программистов.
Аватара пользователя
conf
LIMB Addicted
 
Сообщения: 570
Зарегистрирован: Вт мар 25, 2008 6:41 pm
Откуда: Tashkent, Uzbekistan

Пред.След.

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

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

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