Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

кеширование

00 голосов
6
Подскажите плз на примере как можно закешировать переменную $test?

Что-то пробовал по справочнику, но не как не могу разобраться

Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("test");

   $test   =   print_catalog(55);   

   function print_catalog($block_id)
   {
      if(CModule::IncludeModule('iblock'))
      {
         $arFilter   =   Array(   "IBLOCK_ID"=>$block_id,
                           "ACTIVE_DATE"=>"Y",
                           "ACTIVE"=>"Y" );
         $arSort      =   Array(   "active_from"=>"desc"   ); 
         $res = CIBlockElement::GetList($arSort, $arFilter, false, "", $arSelect);
           $row = $res->GetNext();
           return($row);          
        }
   }

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>
спросил 09 Июнь, 13 от WETERa (800 баллов)

6 Ответы

00 голосов
Вот пример принудительного кеширования с помощью класса CPHPCache
Все взято с документации ;)
Код
       $fbCache = new CPHPCache;
       $cacheID = array(SITE_ID, $arParams["RSS_URL"]);
       $cacheTime = 86405; //Время кеширования - сутки и 5 секунд на всякий случай
       
       if($fbCache->InitCache($cacheTime, $cacheID, "/")):
         $vars = $fbCache->GetVars();
          $arResult["RSS_INFO"] = $vars['RSS_INFO'];
          unset($vars);
      else:   
           $xml_url = "http://api.feedburner.com/awareness/1.0/GetFeedData?uri=";
           $name = substr($arParams["RSS_URL"], (strrpos($arParams["RSS_URL"], '/')+1));
           $xml_url .= $name;
           $reader = new XMLReader();
           
           @$reader->open($xml_url);
           
           while (@$reader->read()) {
               if ($reader->name == "entry"){
                   $circulation = @$reader->getAttribute("circulation");
                   $hits = @$reader->getAttribute("hits");
                 }
                 if ($reader->name == "entry") {
                   $hits = @$reader->getAttribute("hits");
               }
           }
           @$reader->close();
            
           $arResult["RSS_INFO"] = array(
               "NAME"          =>  $name,
               "circulation"   =>  ($circulation > 0) ? $circulation : 0, 
               "hits"          =>  $hits, 
               "XML_URL"       =>  $xml_url,
               "URL"           =>  $arParams["RSS_URL"],
           );
       endif;
       
       if   ($fbCache->StartDataCache())
         $fbCache->EndDataCache(array('RSS_INFO' => $arResult["RSS_INFO"]));
      unset($fbCache);
ответил 09 Июнь, 13 от Almarea (3,760 баллов)
00 голосов
YakDm,
Спасибо все работает отлично
ответил 20 Июнь, 13 от WETERa (800 баллов)
00 голосов
вроде все правильно сделал но каждый следующий кеш с другим ИД затирает предыдущий, сохраняются все в 1 файл на сервере
ответил 23 Сен, 13 от WETERa (800 баллов)
00 голосов
эх ладно в CPageCache запихнул, вроде норм))
ответил 22 Дек, 13 от WETERa (800 баллов)
00 голосов
Цитата
0987 пишет:
вроде все правильно сделал но каждый следующий кеш с другим ИД затирает предыдущий, сохраняются все в 1 файл на сервере

Неправильно. Значит не правильно формируете идентификатор кеша.
$cacheID = array(SITE_ID, $arParams["RSS_URL"]);
$cacheID - должен содержать "все", что влияет на результат.
ответил 07 Апр, 14 от Almarea (3,760 баллов)
00 голосов
у меня примерно было так по страницам
1)
[0]=>RU
[1]=>1
2)
[0]=>RU
[1]=>2
3)
[0]=>RU
[1]=>3

и т.д. на каждой странице, ставил вывод, все правильно менялось, ну ладно это не важно, html вроде по шустрее работает, остановлюсь на нем, еще раз спс))
ответил 31 Июль, 14 от WETERa (800 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 11 Март, 14 от Snezhka (2,240 баллов)
0 голосов
5 ответов
спросил 01 Дек, 13 от Asteria (1,840 баллов)
0 голосов
5 ответов
0 голосов
0 ответов
спросил 28 Июль, 13 от CmexXx (140 баллов)
0 голосов
0 ответов
спросил 02 Июнь, 13 от Dayran (840 баллов)