Рaссказы о MEMCACHE
Сменив отдел на работе, т.е. почти поменяв работу до НГ, и перейдя в сопровождение могучего сайта, я столкнулся с такой интересной штукой под название Memcache
Что это такое? Это демон, т.е. процесс, висящий в памяти сервера, и являющийся хранилищем информации, можно задавать размер выделяемой под кэш памяти.
Что такое кеш — ну многие разработчики знают что это такая штука, которая хранит в себе информацию, дабы не давать плодиться трафику (мое описание) =)
Как работает этот кеш?
Возьмем пример с большими/тяжелыми запросами к БД, например есть запрос, который выполняется более 1 секунды, но возвращает информацию которая по сути обновляется раз в Nое количество пройденного времени.
Кол-во посетителей сайта больше 21000 человек в день, если каждый пользователь будет ждать по 2 секунды — это еще ниче, но вот если будет послано хотя бы 100−500 запросов продолжительностью 2 секунды MySQL, ему будет тяжело, а зачем мучить лишними запросами базу, если ее можно мучить раз в час, всего 1 раз, т.к. по условию, у нас информация обновляется через определенное кол-во времени, скажем час.
Итак — пример:
$sql = 'SELECT * FROM table WHER условие ORDER BY сортировка LIMIT 30'; $r = mysql_query($sql); // вот тут проиходит тормоз >while($d = mysql_query($r)) { //что то делаем с данными }
для того что бы использовать КЕШ, поправим код следующим образом:
$memcache = new Memcache; $memcache -> connect('localhost') or die ("Could not connect to casheServer"); $n = 60; // 60 минут // получаем массив из кеша $array = memcahce_get($memcache, 'sql_array'); // Если массива нет >if(!is_array($array)) { // генерим данные $array = array(); $sql = 'SELECT * FROM table WHER условие ORDER BY сортировка LIMIT 30'; $r = mysql_query($sql); // вот тут проиходит тормоз while($d = mysql_query($r)) { $array[] = $d; } // заносим их в кеш на N минут memcache_set( $memcache, 'sql_array', $photos_ids, 0, $n*60 ); } print_r($array);
скорость возрастет в несколько раз, только при учете, что у Вас реально есть тяжелые запросы, которые выполняются долго.
Проверить скорость запросов можно следующим методом:
$debug = array(); function mysql_query_exec($query) { global $debug; $GMT = getmicrotime(); $T = time(); $ReturnQuery = mysql_query($query); $CGMT = round(getmicrotime() - $GMT,5); $TIME = time() - $T; $debug['querys'][] = array('time' => ( $CGMT + $TIME ),'query' => $query); if (!isset($debug['timeQuery'])) $debug['timeQuery'] = 0; $debug['timeQuery'] = $debug['timeQuery'] + ( $CGMT + $TIME ); return $ReturnQuery; } $sql = 'SELECT * FROM table WHER условие ORDER BY сортировка LIMIT 30'; $r = mysql_query_exec($sql); // вот тут проиходит тормоз print_R($debug);
на экране покажутся все запросы и их время выполнения
Взять тут: http://pecl.php.net/package/memcache
Я внимательно читал второй абзац и не вкурил суть изложенного
Если ты реально писал это для новичков, то стоило расписать более подробно…
Привет, статья интересная и я тоже процитирую у себя в блоге
Да уж… Тут как люди раньше говорили: Азбуку учат — во всю избу кричат
Прикольно написано и читать интересно
решил помочь и разослал пост в соц. Закладки. Надеюсь поднимется популярность.
Леонид
Спасибо! Буду стараться пополнять статьями как можно чаще блог. планирую поменять тему
Ура!, тот кто писал ништяк написал!
Спасибо
Я конечно, мало, что смыслю в посте, но постараюсь осилить.
А в чем смысл добавлять свой блог на Фид-бернер? Траф это увеличит или что? (извините: за оффтоп)
Алексей Иванов я в поиске набрал этот Фид-бернер и смотрю ты везде одн ои тоже буква в букву пишешь) спам бот ты что ли?
А Вы не задумывались о том, чтобы параллельно завести еще один блог, на смежную тему? У Вас неплохо получается
Вот именно с этой статьи начинаю читать Ваш блог. Плюс один подписчик
Сорри за оффтоп, не подскажете, где мона такой же симпатичный шаблон для блога взять?
Настя blogstyle.ru/
Думаю многие будут не согласны
Евгения думать не надо, надо писать свое мнение
решил помочь и разослал пост в соц. Закладки. Надеюсь поднимется популярность.
Вот именно с этой статьи начинаю читать этот блог. Плюс один подписчик
Слушай, ты долго вот такой пост писал? Жутко хочется узнать...
Слушай, как долго вот такой текст сочинял? Жутко интересно...
А как вы смотрите, чтобы завести на блоге раздел «самые горячие обсуждения» ну или типа того. Там можно будет комментировать наиболее горячие статьи вашего блога
+1 к предыдущему комменту
Спасибо за простой пример — сейчас как раз подумываю часть запросов переписать с использованием memcache
Спасибо, давно искал этот метод.