diff --git a/ClassCache.php b/ClassCache.php new file mode 100644 index 0000000..6a78708 --- /dev/null +++ b/ClassCache.php @@ -0,0 +1,63 @@ +cache= new CPHPCache(); + $this->cache_time = $cache_time; + $this->cache_path = $cache_path; + } + + private function getElementList($arOrder=array("SORT"=>"ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array('ID','NAME')){ + CModule::IncludeModule('iblock'); + $res = CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields); + $arResult = array(); + while($rec = $res->fetch()){ + $arResult[] = $rec; + } + return $arResult; + } + + public function getCachedElementList($arOrder=array("SORT"=>"ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array('ID','NAME')){ + $arParams = array('arOrder'=>$arOrder, 'arFilter'=>$arFilter, 'arGroupBy'=>$arGroupBy, 'arNavStartParams'=>$arNavStartParams, 'arSelectFields'=>$arSelectFields); + + $cache_id=md5(serialize($arParams)); + $arResult = false; + + if ($this->cache_time > 0 && $this->cache->InitCache($this->cache_time, $cache_id, $this->cache_path)){ + $cache_res = $this->cache->GetVars(); + if (is_array($cache_res["arResult"]) && (count($cache_res["arResult"]) > 0)){ + $arResult = $cache_res["arResult"]; + } + }else{ + $this->clearCache(); + } + + if(!$arResult){ + $arResult = $this->getElementList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields); + if ($this->cache_time > 0) + { + $this->cache->StartDataCache($this->cache_time, $cache_id, $this->cache_path); + $this->cache->EndDataCache(array("arResult"=>$arResult)); + } + } + return $arResult; + } + + private function clearCache(){ + $this->cache->CleanDir( $this->cache_path ); + } +} + +//Непосредственно Usage +$testing = new iElemsCached(300); +$testing_glist = $testing->getCachedElementList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>"1")); +echo "
";
+var_dump($testing_glist);
+echo"
"; \ No newline at end of file diff --git a/README.md b/README.md index 1b297da..fd48c41 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,29 @@ -# Тестовое задание для разработчика -
    -
  1. Форкнуть текущий репозиторий.
  2. -
  3. Создать ветку test-#ФАМИЛИЯ_ЛАТИНИЦЕЙ#.
  4. -
  5. Реализовать в репозитории следующий функционал - -
  6. -
  7. - Закрепить реализованный функционал коммитом и отправить коммит в репозиторий -
  8. -
- -По результатам работы отписаться на адреса su@p-w-d.ru, a@p-w-d.ru, e@p-w-d.ru. и прикрепить в письмо архив с выполненным функционалом и ссылку на резюме. +# Тестовое задание для разработчика +
    +
  1. Форкнуть текущий репозиторий.
  2. +
  3. Создать ветку test-#ФАМИЛИЯ_ЛАТИНИЦЕЙ#.
  4. +
  5. Реализовать в репозитории следующий функционал + +
  6. +
  7. + Закрепить реализованный функционал коммитом и отправить коммит в репозиторий +
  8. +
+ +По результатам работы отписаться на адреса su@p-w-d.ru, a@p-w-d.ru, e@p-w-d.ru. и прикрепить в письмо архив с выполненным функционалом и ссылку на резюме. diff --git a/Rss.php b/Rss.php new file mode 100644 index 0000000..cb8dfd7 --- /dev/null +++ b/Rss.php @@ -0,0 +1,15 @@ +channel->item as $item){ + if(count($items) < $count){ + $items[] = array('title'=>$item->title->__toString(), 'link'=>$item->link->__toString(), 'description'=>$item->description->__toString()); + } +} +foreach ($items as $item){ + print $item['title'].' '.$item['link'].' '.$item['description'].'/n'; +} \ No newline at end of file