avgaz 8 05/25/14 12:52 Добрый день. Потихоньку делаю портал для форума и столкнулся вот с чем имеется класс кеширования http://www.invisionpower.com/support/guides/_/advanced-and-developers/api-methods/kernel-caching-libraries-classcachephp-r153как бы все работает, но вот проблема он включается путем добавления соответствующей строки в conf_global.php и включается для всего форума в целом, но мне этого не нужно хочется что бы работал кешь только для портала, можно как то включить его отдельно от форума? Поделиться сообщением Ссылка на сообщение
siv1987 2628 05/25/14 15:04 Что вы подразумеваете под "кеш только для портала"? Кеш - это когда системные кеши находятся не в бд (ibf_cache_store), а хранятся где-то в другом месте, например на диске, или в memcached. Если включить кеширование только для портала, то остальные кеши системы либо будут отсутствовать, либо будут в неактуальном состоянии, так как обновляться эти кеши будут в бд, а в своем приложении вы будете дергать их из другого места. И аналогично, на форуме вы не сможете получить данные их кеша портала, так как к нему не будет доступа. Если нужно кешировать какие-то конкретные данные в портале - используйте другую обертку доступа нежели стандартный объект кеш-а. Поделиться сообщением Ссылка на сообщение
avgaz 8 05/25/14 15:45 (изменено) Ну для примера пусть будет не кешь портала а кешь скрипта возьмем пример из 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; это активирует систему кеширования всего форума, где это предусмотрено, но мне этого не нужно мне нужно только что бы происходил кешь в моем скрипке, классом кеширования форума, а сам форум не кешировался Изменено 25 мая 2014 пользователем avgaz Поделиться сообщением Ссылка на сообщение
siv1987 2628 05/25/14 16:10 Кеширование либо работает глобально, либо не работает. Даже если включить кеш только для в текущем приложение, он включится для всей аппликации в целом.Нужен отдельный кеш - юзайте отдельный кеш, используя свой объект 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(); Поделиться сообщением Ссылка на сообщение
avgaz 8 05/25/14 16:24 у меня в этом случае выдает Fatal error: Interface 'interfaceCache' not found in \forum\ips_kernel\classCacheDiskcache.php on line 35 Поделиться сообщением Ссылка на сообщение
siv1987 2628 05/25/14 20:39 require_once(IPS_KERNEL_PATH.'interfaces/interfaceCache.php');require_once(IPS_KERNEL_PATH.'classCacheDiskcache.php'); Поделиться сообщением Ссылка на сообщение