Попросил админа нашего сервера установить memcached, и pecl расширение для php memcache. В результате получил очень эффективное средство для кеширования данных. Штука настолько удобная, что сразу же захотелось о ней написать.

Если все уже установлено, то в php Вам должен быть доступен класс Memcache. Дальше все просто. Погуглив нашел пару интересных примеров. 

<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 12121) or die('не могу соедениться');

//пробуем получить mykey
$key = @$memcache->get('mykey');
if(!empty($key))
	//Если объект уже в кеше, выводим его значение
	echo $key;
else{
	//иначе с ключом mykey, создадим его
	//Объект mykey будет храниться 10 секунд и не будет сжат
	$memcache->set('mykey', date('H:i:s'), false, 10);
	echo $memcache->get('mykey'); // выводим значение
}
//Закрываем соединение с сервером Memcached
$memcache->close();
?>

Где это можно использовать? Например для кеширования запросов к однотипным запросам к БД или для кеширования сгенерированной страницы. 

 

Раньше я делал это при помощи файлов. Сейчас все стало гораздо проще

 

<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 12121) or die('не могу соедениться');
$key = md5(serialize($_GET)); // это наг запрос
//можно место serialize($_GET) использовать $_SETVER['REQUEST_URI']
if(!empty($page = @$memcache->get($key)))
	echo $page;
else{
	ob_start();
	echo 'привет мир и еще 1000000 запросов к БД';
	$memcache->set($key, ob_get_contents(), false, 60); // кешируем на минуту, без сжатия
}

плюс в том, что теперь нет расходов на обращение к файлам, а есть быстрое обращение к памяти.

Так можно сохранять в памяти целые объекты.  

Очень полезно для работы с сессиями. А еще очень удобно будет работать с такой памятью в приложениях типа чата,  или социальной сети. Разумеется, разработку таких проектов можно отдать на it аутсорсинг, а можно сделать самому, профессионально и недорого.

 

 

Рассказать друзьям

Добавить комментарий


Защитный код
Обновить