В данной статье мы расскажем об универсальном методе кеширования 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 - один из параметров, их может быть больше одного
Данный способ хорошо подойдёт для таких сайтов - работа Сосновый Бор, где требуется быстрая обработка больших объёмов данныйх. Кеширование позволит значительно снизить нагрузку и время обработки данных.
| Голосовать за статью: |
|
|
|
|
Похожие новости:
Если у Вас возникают какие-либо вопросы или проблемы, то Вы можете написать в комментариях или воспользоваться формой обратной связи.
При копировании материлов ссылка на источник обязательна!