Index SiteMap Portfolio

Назад

окт
13

Достаем кэшировалку из CakePHP

Для одного проекта понадобилась простая кэшировалка. Из-за того, что их я уже напереписывал с десяток, сразу выдвинул требование «для простых проектов больше ничего переписывать не собираюсь!»

Всегда использовал только кэширование в файлах или Memcache, поэтому, нужно было получить такую библиотеку, которая могла бы работать двумя способами, в зависимости от параметров сайта.

После решения задачи получилось несколько классов из библиотек CakePHP, которые можно использовать в любом своем проекте точно также, как и в самом фреймворке. Как и в оригинале, поддерживается: Memcache, Apc, Xcache и File.

Можете сразу все скачать и разбираться по примеру. Все просто.

Для вас доступны следующие методы:
// Запись $data с ключом $key на $duration секунд.
Cache::write($key, $data, $duration);
 
// Чтение значения по ключу $key
Cache::read($key)
 
// Удаление ключа $key и его данных
Cache::delete($key)
 
// Удаление устаревших данных
Cache::gc() - удаление всего устаревшего(!)
 
// Полная очистка кэша
Cache::clear() - полная очистка Кеша

Пример работы с файловой кэшироволкой:

require_once('classes/cache/cache.php');
 
Cache::config('default', array(
	'engine' => 'File', // Кэш в файлах
	'duration'=> 3600, // Время жизни кэша
	'path' => dirname(__FILE__) . '/tmp/', // Путь для файлов кэша
	'prefix' => 'cake_', // Префикс для файлов кэша
	'lock' => false, // Блокировка файла на время записи кэша
	'serialize' => true, // Нужна ли сериализация данных
));
 
// … здесь работа с кэшем

Пример для Memcache

require_once('classes/cache/cache.php');
 
Cache::config('default', array(
		'engine' => 'Memcache', 
		'duration'=> 3600
		'prefix' => 'cake_', 
		'servers' => array(
			'127.0.0.1:11211' // Сервера Memcache
		), 
		'compress' => false, // Сжимать ли данные (влияет на скорость работы)
));
 
// работаем…

Мой скромный тест дан в этом скрипте. Можно заменить ‘engine’ => ‘File’ на ‘engine’ => ‘Memcache’, и все будет продолжать работать в штатном режиме. Красота!
Домашнее задание: проверить Apc и Xcache. Результат сообщить в комментариях :)

Сам набор классов, напоминаю, можно скачать: Cache из CakePHP. Не забывайте, что некоторые строки я закомментировал и подправил, чтобы можно было прикрутить библиотеку к своим скриптам.

Для более серьезных задач, чем просто запись и чтение посмотрите Dklab_Cache.

Для таких же обычных «записей и чтений», но с данной библиотекой, взгляните на проект www.livestreet.ru, а точнее, на его исходники. Там я видел обертку для Dklab_Cache. Но этот вариант лучше использовать, если точно знаете, что дальше нужно будет решать сложные задачи :)

PS. Если не используется кэш в файлах, то можно удалить файлы «file.php» и «folder.php».

PPS. Не забудьте удалить каталог tmp из архива и вписать нормальный путь к каталогу для кэша, если вы все же используете кэширование в файлах :)

Добавить в закладки на google.com Добавить в закладки на bobrdobr.ru Добавить в закладки на del.icio.us Добавить в закладки на technorati.com Добавить в закладки на linkstore.ru Добавить в закладки на news2.ru Добавить в закладки на rumarkz.ru Добавить в закладки на memori.ru Добавить в закладки на moemesto.ru


Ваше мнение

* Имя:
* E-mail:
*Этот адрес не публикуется. Для общих контаков оставляйте адрес в комментарии.
Сайт/Блог:
Примечание. Комментарии находятся в теге <noindex>, что значит: смысла срать здесь нет.

Комментарии

21.10.2008 Санек
Создание такого блога, как у Вас, конечно, потребовало много времени. Я уже много раз брался за эту работу, даже место покупал для размещения, но вот с популрностью. Ни как получалось, а у Вас как я погляжу, нормально растете от визита к визиту. Ничего, я пока все разузнаю, а потом еще и перегоню Вас по фиду! Успехов, встретимся еще!
 
21.10.2008 Евгений
Как вы, бл**ядь, зае**бали...
 
08.12.2008 xpress
Ничего себе! Оказывается ничего сложного тут нет!
Ответ:да-да...
 
28.01.2009 Антон
Как все просто :)
 

Добавить в закладки на google.com Добавить в закладки на bobrdobr.ru Добавить в закладки на del.icio.us Добавить в закладки на technorati.com Добавить в закладки на linkstore.ru Добавить в закладки на rumarkz.ru Добавить в закладки на memori.ru Добавить в закладки на moemesto.ru


 Бесплатно

Читать мою ленту