Разработка сайтов

Кеширование массивов Битиркс


//заготовка
$cacheId = 'catalog_product_list';
$arProducts = getCache($cacheId);
if(!is_array($arProducts)){
  // какой-то запрос в бд
  $arProducts = \Bitrix\Iblock\ElementTable::getList(array(
      'select' => array('ID', 'IBLOCK_ID', 'NAME'),
      'filter' => array('IBLOCK_ID' => CATALOG_IBLOCK_ID),
      'limit' => 100,
      'order' => array('TIMESTAMP_X' => 'ASC')
  ))->fetchAll();
  //добавляем кеш
  addCache($cacheId,$arProducts);
}



// example
$cacheId = 'section_block'; // задаем уникальный cacheId
$arrayToSave = ['TEST'=>'Y'];
addCache($cacheId,$arrayToSave);
echo getCache($cacheId);
clearCache($cacheId);

//functions insert to init.php
function getCache($cacheId){
    $cache = Bitrix\Main\Data\Cache::createInstance();
    if($cache->initCache(72000, $cacheId))
        return $result = $cache->getVars();
    return false;
}

function addCache($cacheId,$array){
    $cache = Bitrix\Main\Data\Cache::createInstance();
    $cache->initCache(72000, $cacheId);
    $cache->startDataCache();
    $cache->endDataCache($array);
    return true;
}

function clearCache($cacheId){
    $cache = \Bitrix\Main\Application::getInstance()->getManagedCache();
    $cache->clean($cacheId);
}
Подписка на блог Подпишись на новые материалы от US STUDIO и вы не пропустите интересные статьи от нашей компании