avgaz Posted May 25, 2014 Share Posted May 25, 2014 Добрый день. Потихоньку делаю портал для форума и столкнулся вот с чем имеется класс кеширования http://www.invisionpower.com/support/guides/_/advanced-and-developers/api-methods/kernel-caching-libraries-classcachephp-r153как бы все работает, но вот проблема он включается путем добавления соответствующей строки в conf_global.php и включается для всего форума в целом, но мне этого не нужно хочется что бы работал кешь только для портала, можно как то включить его отдельно от форума? Link to comment Share on other sites More sharing options...
siv1987 Posted May 25, 2014 Share Posted May 25, 2014 Что вы подразумеваете под "кеш только для портала"? Кеш - это когда системные кеши находятся не в бд (ibf_cache_store), а хранятся где-то в другом месте, например на диске, или в memcached. Если включить кеширование только для портала, то остальные кеши системы либо будут отсутствовать, либо будут в неактуальном состоянии, так как обновляться эти кеши будут в бд, а в своем приложении вы будете дергать их из другого места. И аналогично, на форуме вы не сможете получить данные их кеша портала, так как к нему не будет доступа. Если нужно кешировать какие-то конкретные данные в портале - используйте другую обертку доступа нежели стандартный объект кеш-а. Link to comment Share on other sites More sharing options...
avgaz Posted May 25, 2014 Author Share Posted May 25, 2014 (edited) Ну для примера пусть будет не кешь портала а кешь скрипта возьмем пример из API по ссылке <?php require_once( '/forum/initdata.php' ); require_once( '/forum/admin/sources/base/ipsRegistry.php' ); $registry=ipsRegistry::instance(); $registry->init(); $variable2 = $registry->cache()->getWithCacheLib( 'This_is_a_unique_key' ); if( !$variable2 ) { $variable = 'Some data that I want to store in memory for retrieval at a later time. ly and show the cached resu.'; $registry->cache()->putWithCacheLib( 'This_is_a_unique_key', $variable, 120 ); } $registry->output->setTitle('Ваше название'); $registry->output->addContent($variable2); $registry->output->sendOutput(); Как бы все работает кеширует и тд, но для работы нужно добавить в conf_global.php скажем $INFO['use_diskcache'] = 1; это активирует систему кеширования всего форума, где это предусмотрено, но мне этого не нужно мне нужно только что бы происходил кешь в моем скрипке, классом кеширования форума, а сам форум не кешировался Edited May 25, 2014 by avgaz Link to comment Share on other sites More sharing options...
siv1987 Posted May 25, 2014 Share Posted May 25, 2014 Кеширование либо работает глобально, либо не работает. Даже если включить кеш только для в текущем приложение, он включится для всей аппликации в целом.Нужен отдельный кеш - юзайте отдельный кеш, используя свой объект require_once(IPS_KERNEL_PATH.'classCacheDiskcache.php'); $mycache = new classCacheDiskcache('This_is_a_unique_key'); $registry->setClass('mycache', $mycache); $mycache->putInCache(); $mycache->getFromCache(); $mycache->updateInCache(); Link to comment Share on other sites More sharing options...
avgaz Posted May 25, 2014 Author Share Posted May 25, 2014 у меня в этом случае выдает Fatal error: Interface 'interfaceCache' not found in \forum\ips_kernel\classCacheDiskcache.php on line 35 Link to comment Share on other sites More sharing options...
siv1987 Posted May 25, 2014 Share Posted May 25, 2014 require_once(IPS_KERNEL_PATH.'interfaces/interfaceCache.php');require_once(IPS_KERNEL_PATH.'classCacheDiskcache.php'); Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now