Работа с memcache

Тема в разделе "PHP", создана пользователем SimonSmith, 7 мар 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. SimonSmith

    SimonSmith Постоялец

    Регистр.:
    25 сен 2008
    Сообщения:
    147
    Симпатии:
    32
    Добрый день,
    решил использовать memcache. Прочитал статью на хабре, вроде все понятно, только немного не понятно как все работает.
    Есть простой скрипт
    PHP:
    $memcache = new Memcached();
    $memcache->addServer('localhost'11211);
    function 
    loadС(){
        for(
    $i=0;$i<=900000;$i++){
            
    $aResult[] = $i;
        }
    }
     
    if (!(
    $bar $memcache->get('array_bar'))){
        
    $bar loadC();
        
    $memcache->set($bar'array_test'60*10);
    }
     
    if (!(
    $foo $memcache->get('array_foo'))){
        
    $foo loadC();
        
    $memcache->set($foo'array_test'60*10);
    }
     
    var_dump($bar);
    var_dump($foo);

    при выполнении срипта таким образом страницы загружается за ~0.8 - 0.4 сек, если выводить на прямую функцию loadC() то страница загружается за ~1.5 - 0.8 сек...
    Как бы это и есть работа мемкэша или я что-то не правильно делаю?

    п.с. знаю что мемкеш используется для снижения нагрузки на базу данных но может и для этого примера должно работать?

    пробовал сделать так:
    PHP:
    if (!($f $memcache->get('array_sql'))){
        
    $sql $db->query("SELECT `name_j` FROM `jurnals`");
        
    $aResult[] = array();
        while(
    $aRows $sql->fetch_array()){
            
    $aResult[] = $aRows['name_j'];
        }
        
    $f = array('data'=>$aResult);
        
    $memcache->set($f'array_sql'60*10);
    }
    если не ошибаюсь после первого запроса к базе, 2ой запрос не должен исполнятся и я удаляю все что в ife , вывожу переменную var_dump($f) и результат bool(false)...
    Почему? или не так? :ah:
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    в параметрах сначала ключ потом переменная
    PHP:
    $memcache->set('array_sql'$f60*10);
     
    SimonSmith нравится это.
  3. SimonSmith

    SimonSmith Постоялец

    Регистр.:
    25 сен 2008
    Сообщения:
    147
    Симпатии:
    32
    что-то тут не чисто...при вызове по ключу выдает false...

    п.с. на windows'е установил мемкеш, все работает...на линуксе не хочет

    п.с.с. переустановил все и заработало
     
Статус темы:
Закрыта.