Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions iblock_cashe.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?php


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");


class iblockCashe{

public $cache_time ;
public $cache_path ;
public $cache ;

// начало
function __construct($cache_time=100 ,$cache_path='cashenew') {
$this->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();

47 changes: 47 additions & 0 deletions rss.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php



class rss{
public $url ;
public $mass_news ;

//стартуем
function __construct($url) {
$this->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();