Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Кеш

00 голосов
9
В документации написано что кеш создается в папке bitrix/cache но почемуто я ее там не нашел. Она создается при вызове метода EndDataCache? или ее надо создать самому?
спросил 09 Фев, 13 от Kania (5,180 баллов)

9 Ответы

00 голосов
Создал папку bitrix/cache
но результат ниже приведеннокго скрипта в кеше не сохраняется, в папке cache ничего не появляется
$obCache = new CPHPCache;


$life_time = 30*60;


$cache_id = 'city';


if($obCache->InitCache($life_time, $cache_id, "/"))
{

$vars = $obCache->GetVars();
$res_city = $vars["res_city"];
}

else
{


$ch = curl_init();
//curl_setopt($ch, CURLOPT_FILE, $fp);
$url="http://199.199.199.63:8086/cgi/sirena23.cgi/city_text||query?ak=".urlencode("7Á");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_city=curl_exec($ch);
curl_close($ch);

$obCache->EndDataCache(array('res_city'=>$res_city));
}
ответил 09 Фев, 13 от Kania (5,180 баллов)
00 голосов
Пропущено:
Код
$obCache->Output()

и
Код
$obCache->StartDataCache()
ответил 25 Фев, 13 от Jackie (380 баллов)
00 голосов
$obCache->Output() - выводить мне пока нечего т.к. кеш пустой, там даже файл не создался.
$obCache->StartDataCache()- мне нужно кешировать только переменную $res_city я добавил $obCache->StartDataCache()
Код
$ch = curl_init();
   //curl_setopt($ch, CURLOPT_FILE, $fp);
   $url="http://199.199.199.63:8086/cgi/sirena23.cgi/city_text||query?ak=".urlencode("7&#193;");
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_TIMEOUT, 180);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $res_city=curl_exec($ch);
   curl_close($ch);
   if($obCache->StartDataCache()){
   $obCache->EndDataCache(array('res_city'=>$res_city));}

но результат нулевой в папке cache файл не создается
ответил 01 Апр, 13 от Kania (5,180 баллов)
00 голосов
Вообще кто нибудь пробовал реализовывать кеширование? Нормально работало?
ответил 27 Июль, 13 от Kania (5,180 баллов)
00 голосов
Видимо простому люду здесь вообще внимания не удиляют
ответил 29 Окт, 13 от Kania (5,180 баллов)
Привет ... в init.php добавь этот код:

function cache($config = null,$function){
    $defcinf = array(
        'cache_dir'  => 'default',
        'cache_time' => 3600,
        'cache_id'   => md5(rand(1,90000))
    );
    if (!is_null($config)){
        foreach ($config as $k=>$v){
            if (isset($defcinf[$k])){
                $defcinf[$k] = $config[$k];
            }
        }
    }
    $obCache   = new CPHPCache;
    $cache_dir = "/ch_".$defcinf['cache_dir'];
    $cache_id  = ''.$defcinf['cache_id'];
    if($obCache->InitCache($defcinf['cache_time'], $cache_id, $cache_dir)){
        $return = $obCache->GetVars();
    } elseif ($obCache->StartDataCache()) {
        $return = $function();
        $obCache->EndDataCache($return);
    }
    return $return;
}

использовать например так:

public function get_some($id){
        return cache(array(
            'cache_id'  => 'some_id_'.$id,
            'cache_dir' => 'some_cache/',
            'cache_time' => 86400
        ), function() use ($id) {
          // тут чтото делаешь
           $some = $id + 2 ;
           return $some;
      });
}
00 голосов
права на запись в папку кеш достаточные?

что по этому поводу говорит сам Битрикс в меню Настройки/Инструменты/Проверка сайта?
ответил 03 Фев, 14 от salo (840 баллов)
00 голосов
Читайте Кеширование. Всё описано, и примеры есть.
ответил 23 Май, 14 от Sage (460 баллов)
00 голосов
Цитата
Гость пишет:
Вообще кто нибудь пробовал реализовывать кеширование? Нормально работало?

Пробовал. smile:) Нормально работает. При условии наличия прав на запись файлов и следования инструкциям разработчиков.
ответил 19 Сен, 14 от Jackie (380 баллов)
00 голосов
Всем спасибо. И правда права были только на чтение поэтому ничего не создавалось.....
ответил 24 Янв, 15 от Kania (5,180 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 21 Фев, 14 от root (25,590 баллов)
0 голосов
3 ответов
спросил 25 Май, 13 от Brunya (120 баллов)