Блог

Пример кэширования данных

<?
$obCache = new CPHPCache();
$cacheLifetime = 86400*7; $cacheID = 'AllGiftsIDs'; $cachePath = '/'.$cacheID;
if($obCache->InitCache($cacheLifetime, $cacheID, $cachePath)){//если есть закэшированные данные
	$vars = $obCache->GetVars();
	extract($vars);
	$arAllGiftsIDs = $vars['arAllGiftsIDs'];
}elseif($obCache->StartDataCache()){//если нету закэшированных данных (первый раз)
	CModule::IncludeModule('catalog');
	$arProps = array();
	$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PROPERTY_GIFTS");
	$arFilter = Array("IBLOCK_ID"=>2, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
	$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
	while($ob = $res->GetNextElement()){
		$arFields = $ob->GetFields();
		if(count($arFields['PROPERTY_GIFTS_VALUE'])>0){
			foreach($arFields['PROPERTY_GIFTS_VALUE'] as $key=>$prop){
				if(!in_array($prop, $arProps)) $arProps[$key] = $prop;
			}
		}
	}
	$arAllGiftsIDs = '
    '; foreach ($arProps as $key=>$arSection){ $arAllGiftsIDs .= '
  • <ссылка url="/gifts/?arrFilter_68_'.abs(crc32($key)).'=Y&set_filter=Показать">'.$arSection.'</ссылка>
  • '; } $arAllGiftsIDs .= '
'; $obCache->EndDataCache(array('arAllGiftsIDs' => $arAllGiftsIDs)); } echo $arAllGiftsIDs;//вывод данных ?>

Оставить комментарий



Вам нужен сайт? С чего начать?

Проконсультируем, найдем оптимальное решение, подготовим индивидуальное предложение.