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