Облако запросов перевести с mysql на memcached

Тема в разделе "PHP", создана пользователем jusuf, 3 ноя 2014.

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

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    В общем у меня на сайте написан вот такой костыль , он собирает в базу запросы по которым люди ходят по сайту и потом выводить последних 30. Как базу использует mysql но последнее время заметил что сайт тормозит хочу переписать на memcached должно увеличить скорость записи и считывания.

    вот как это выглядит:
    Capture.PNG

    И воt как это теперь реализовано
    PHP:
    //записываем запрос  
    $query addslashes($q);
    $db->exec("INSERT INTO lastsearch (name) VALUES ('{$query}')");

    //считываем последние запросы
    $get_result_prep=$db->prepare("SELECT * FROM lastsearch WHERE id > 1 ORDER BY id DESC LIMIT 30");
    $get_result_prep->execute();
    $lastsearch '';  
    foreach( 
    $get_result_prep->fetchAll(PDO::FETCH_ASSOC) as $last )
    {   
        
    $last str_replace(array('<''>'), ''$last);
        
    $lastsearch .= '<li><a href="/music/'.urlencode(trim($last['name'])).'" class="hash"  ">'.$last['name'].' mp3</a></li>';


    //что 15 мин база чистится по крону truncate
    вопрос как реализовать вот это на memcache?
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.401
    Симпатии:
    1.182
    Если нет задачи хранить полную историю поиска, можно и на Memcache реализовать. Как итог получаем простейший код:
    PHP:
    $mem_cache = new Memcache;
    $mem_cache->connect('localhost'11211);
    $lastMem $mem_cache->get('lastMem');
    if(!
    is_array($lastMem)) {
      
    $lastMem = array();
    }

    array_unshift($lastMem$q);
    $lastMem array_unique($lastMem);
    $lastMem array_slice($lastMem030); //оставляем 30 записей

    $mem_cache->set('lastMem'$lastMem);

    $lastsearch '';
    foreach( 
    $lastMem as $last )
    {   
        
    $last str_replace(array('<''>'), ''$last);
        
    $lastsearch .= '<li><a href="/music/'.urlencode(trim($last)).'" class="hash"  ">'.$last.' mp3</a></li>';
    }
     
    tesey, jusuf и Akcium нравится это.
Статус темы:
Закрыта.