Установка memcached для PHP во FreeBSD

memcached – это сервис кэширования данных в оперативной памяти. Бывает что такие запросы на сайте вида: «лучшие комментарии за сутки», затратно выполнять при каждой открытие странице. Так же если нужно построить большую выборку данных или обсчитать в PHP, с учетом что эти данные не требуются в реальном времени. Эти запросы нужно кэшировать.
Хотя есть правило при разработки и программированию, что кэш это последние к чему нужно прибегнуть.
Обновляем дерево портов и переходим
cd /usr/ports/databases/memcached
Далее установим memcached make install clean
Дождавшись окончание установки добавляем в файл /etc/rc.conf следующие строчки
memcached_enable="YES"
memcached_flags="-s /tmp/memcached.sock -a 777"

Где s – пусть к сокету(TCP/IP не работает), a — права доступа для сокета. Если сокет не нужен то используем за место -s опции: -l 127.0.0.1 -p 11211, l – IP Адрес и p — порт которые слушает memcached.
Запускаем memcached
/usr/local/etc/rc.d/memcached start

Установим расширение pecl-memcache для php, перейдем в директорию:
cd /usr/ports/databases/pecl-memcache и установим make install clean
После установки перезапустим php-fpm командой
/usr/local/etc/rc.d/php-fpm restart

Теперь проверим работу memcached в среде PHP и я расскажу об основных функциях.
Проверим работу memcached, создадим файл php следующего содержания:
<?php
//Используем класс Memcache
$memcache = new Memcache;
//Подключимся к серверу memcached
$memcache->connect('unix:///tmp/memcached.sock', 0); //Если используете сокет, порт указываем ноль
//$memcache->connect('localhost', 11211); //Если используете TCP/IP
$data = 'Тестовое сообщение работы memcached сервера';
//Кэшируем данные переменной $data
$memcache->set('data_cache', $data, false, 15); //Где data_cache - ключ, $data - данные которые нужно кэшировать, false - не использовать сжатие(zlib), 15 - время хранение данных в кэш.
//Попробуем прочитать данные из memcached
echo $memcache->get('data_cache'); //Должно будет выведено сообщение переменой $data, то есть: "Тестовое сообщение работы memcached сервера". Все memcached работает.

//Теперь покажу как элементарно этим пользоваться
echo '


';
//У нас есть база данных с которой получать данные постоянно слишком нагружено, можно получать данные раз в минуту.
$cache = null; //Переменная для данных из memcached
$cache = $memcache->get('databases_cache');
//Если кэш с ключом databases_cache существует, то получаем данные из memcached.
if ($cache){
echo 'Данные загружены их memcached: '.$cache;
} else {
$databases = '1,2,3,4,5'; //Динамическая база данных(SQL запрос) которою нужно кэшировать.
echo 'Данные получены из базы данных: '.$databases;
//Добавляем данные в memcached
$memcache->set('databases_cache', $databases, false, 60);
}
?>

Запускаем наш php скрипт и проверяем. Так же memcahced можно использовать не только с PHP, можно напрямую работать с MySQL и другим программным обеспечением.
0.10
25.08.2013 14:24