Попросил админа нашего сервера установить 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 аутсорсинг, а можно сделать самому, профессионально и недорого.

