В данной статье мы расскажем об универсальном методе кеширования xml-данных. Универсальный метод, требуется добавить в файл classes/modules/custom.php.

  public function xsltCache($expire = 3600, $stream){
$params_temp = array_slice(func_get_args(), 2);
$params = array();
foreach($params_temp as $param){
$params[] = (strpos($param, '/') !== FALSE) ? "(" . $param . ")" : $param;    
}
$params_str = implode('/', $params);
$url = $stream . "://" . $params_str;
$folder = CURRENT_WORKING_DIR . '/sys-temp/udatacache/'; 
$path = $folder . md5($url) . '.xml';
if(!is_dir($folder)) mkdir($folder, 0777, true);
if(is_file($path)) $mtime = filemtime($path);
if(!is_file($path) || time() > ($mtime + $expire)) {   
$data = file_get_contents($url);
file_put_contents($path, $data);
return array('plain:result' => $data);
}else{
$result = file_get_contents($path);
return array('plain:result' => $result);
}       
}

а сам вызов в XSL-шаблоне будет следующим:
udata://custom/xsltCache/3600/custom/lidersCustom/20
где 3600 - время кеширования xml-данных в секундах,
custom - модуль
lidersCustom - метод
20 - один из параметров, их может быть больше одного

Данный способ хорошо подойдёт для таких сайтов - работа Сосновый Бор, где требуется быстрая обработка больших объёмов данныйх. Кеширование позволит значительно снизить нагрузку и время обработки данных.

Голосовать за статью:

Комментарии

Добавить комментарий

Заголовок:
Ваш ник:
Ваш e-mail:
Текст:
Введите текст на картинке

Похожие новости:

Если у Вас возникают какие-либо вопросы или проблемы, то Вы можете написать в комментариях или воспользоваться формой обратной связи.

При копировании материлов ссылка на источник обязательна!