From 31a6f5fd3e0ab4b9130898babc5a92d3d886f5b7 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 5 Sep 2018 21:42:13 +0300 Subject: [PATCH] test zolotuhin --- iblock_cashe.php | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ rss.php | 47 +++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 iblock_cashe.php create mode 100644 rss.php diff --git a/iblock_cashe.php b/iblock_cashe.php new file mode 100644 index 0000000..8121bdc --- /dev/null +++ b/iblock_cashe.php @@ -0,0 +1,82 @@ +cache_time=$cache_time; + $this->cache_path=$cache_path; + $this->cache= new CPHPCache(); + } + + //получаем данные в массив + public function getMassData( $arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields ){ + //получаем массив с данными + CModule::IncludeModule('iblock'); + $res = CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields); + $arMassList=array(); + while($ar_res = $res->Fetch()) + { + $arMassList[]=$ar_res; + } + return $arMassList; + } + + // аналог getList- получаем массив с данными (все параметры как у get lista) + public function GetCashedListData(array $arOrder = Array("SORT"=>"ASC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = Array()) + { + //делаем id кеш-массива + $mass= array('O'=> $arOrder, 'F'=> $arFilter, 'G'=> $arGroupBy, 'N'=> $arNavStartParams, 'S'=> $arSelectFields + ); + $cache_id=md5(json_encode($mass)); + $cache_time = $this->cache_time; + $cache_path=$this->cache_path; + + // проверка на наличие кеша и истекшее время + if ($cache_time > 0 && $this->cache->InitCache($cache_time, $cache_id, $cache_path)) + { + $res = $this->cache->GetVars(); + if (is_array($res["arMassList"]) && (count($res["arMassList"]) > 0)){ + $arMassList = $res["arMassList"]; + // echo 'Берем данные из кеша'; + } + } + //если пустой кешь или прошло время , получаем данные из базы + if (!is_array($arMassList)) + { + $arMassList=$this->getMassData( $arOrder , $arGroupBy , $arNavStartParams , $arSelectFields ); + // echo 'Не кешированный!!!'; + if ($cache_time > 0) + { + $this->cache->StartDataCache($cache_time, $cache_id, $cache_path); + $this->cache->EndDataCache(array("arMassList"=>$arMassList)); + } + } + return $arMassList; + } + + //очистка кеша + public function ClearCashe(){ + $this->cache->CleanDir( $this->cache_path ); + } +} + +// стартуем, задаем начальные параметры +$iblock_obj=new iblockCashe(150 ,'mypath2'); + +//получаем даные +$arResult=$iblock_obj->GetCashedListData(array(), array('ID'=>2) ,false ,false, array('ID','NAME')); +print_r($arResult); +//Очистка кеша, по необходимости +//$iblock_obj->ClearCashe(); + + die(); + diff --git a/rss.php b/rss.php new file mode 100644 index 0000000..60cf57d --- /dev/null +++ b/rss.php @@ -0,0 +1,47 @@ +url=$url; + $this->get5new(); + } + + //получаем 5 новостей + public function get5new(){ + $response_xml_data = file_get_contents($this->url); + $data = simplexml_load_string($response_xml_data); + $count=0; + foreach($data->channel->item as $value){ + if($count==5){ continue; } + $mass_temp=array(); + $mass_temp['name']=(string)$value->title; + $mass_temp['href']=(string)$value->link; + $mass_temp['anons']=(string)$value->description; + $this->mass_news[]=$mass_temp; + $count++; + } + } + + // Отображает с проверкой на коммандную строку + public function show(){ + $sapi = php_sapi_name(); + if ($sapi=='cli') { + foreach ($this-> mass_news as $value){ + print $value['name'].' '.$value['href'].' '.$value['anons'].'/n'; + } + }else{ + echo 'Ошибка! Запуск возможен только с командной строки'; + } + } + } + +$rss=new rss('https://lenta.ru/rss'); +$rss->show(); + +