Данная статья носит характер «Скорой помощи». Развернутое описание конкретных действий, которые позволять установить и настроить memcached на сервере.
Начнем с определения.
Memcached — программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы.
Начальные данные:
Начнем с последнего пункта. За счет запущенного интернет-ресурса (или его подобия) мы можем просто и быстро выяснить что у нас установлено (быть может, что среди прочего мы найдем и memcached). Создадим файл с названием info.php
, в котором напишем:
<?php phpinfo(); ?>
Выполним код, обратившись в по адресу http://example.com/info.php
:
Если среди всего прочего вы отыскали похожую запись — значит все в порядке и дело уже сделано. В противном случае — этот результат мы получим по итогам действий, описанных в данной публикации.
Запустим установку командой
apt-get install memcached php5-memcache
Ожидаем завершения установки. После проверим результаты командой netstat
netstat -tap | grep memcached
В результате получаем:
tcp 0 0 *:11211 *:* LISTEN 13053/memcached
Как мы видим, по умолчанию memcached по-умолчанию «слушает» порт 11211. Следовательно, через данный порт любой желающий сможет подключится и использовать наш memcached-сервер. Обезопасим себя, дадим такое право только своему серверу (localhost). Откроем файл /etc/memcached.conf
через панель управления, либо через консоль:
vi /etc/memcached.conf
Данный файл содержит подробные комментарии. Обязательно ознакомьтесь с ними.
Добавьте строку -l 127.0.0.1
.
Перезагружаем memcached-сервер командой:
/etc/init.d/memcached restart
И проверим еще раз:
netstat -tap | grep memcached
В результате мы должны получить что-то вроде
tcp 0 0 localhost.localdo:11211 *:* LISTEN 13092/memcached
Теперь memcached работает только на локальный сервер.
Перечень команд (версия memcache может отличаться!):
apt-get install php5-dev libmemcache-dev pecl download memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6/ phpize && ./configure --enable-memcache && make cp modules/memcache.so /usr/lib/php5/20060613/ echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini
Перезагружаем Apache:
apachectl graceful
Проверим скрипт, размещенный нами ранее по адресу http://example.com/info.php
. Теперь мы должны найти там пункт Memcache.
Создадим файл result.php
и запустим его.
<?php if (!class_exists("Memcache")) exit("Memcached не установлен"); $memcache = new Memcache; $memcache->connect('localhost', 11211) or exit("Невозможно подключиться к серверу Memcached"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>\n"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Не получилось оставить запись в Memcached"); echo "Записываем данные в кеш Memcached (данные будут храниться 10 секунд)<br/>\n"; $get_result = $memcache->get('key'); echo "Данные, записанные в Memcached:<br/>\n"; var_dump($get_result); ?>
Результат работы скрипта:
Server's version: 1.4.13 Записываем данные в кеш Memcached (данные будут храниться 10 секунд) Данные, записанные в Memcached: object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }
Все так или почти так? Тогда все в порядке. Если нет — попробуйте повторить процедуры.