Установка memcached под Windows 7

08.04.2013

Теги: MemcachedPHPWeb-разработкаWindowsНастройкаУстановка

Memcached разработан для кэширования данных, генерация которых требует большого количества ресурсов. Такого рода данные могут содержать что угодно, начиная с результатов запроса к базе данных и заканчивая тяжеловесным куском шаблона.

Для начала скачиваем сам сервер memecached. Распаковываем архив memcached-1.2.6-win32-bin.zip, кладем файл memcached.exe в директорию C:/Program Files/memcached/. Устанавливаем как сервис (cmd запускаем от имени администратора):

cd C:/Program Files/memcached
memcached.exe -d install

Краткую справку по memcached можно получить с помощью ключа -help:

memcached -help

Результат:

C:\Program Files\memcached>memcached.exe -help
memcached 1.2.6
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 0, off)
-s <file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d start          tell memcached to start
-d restart        tell running memcached to do a graceful restart
-d stop|shutdown  tell running memcached to shutdown
-d install        install memcached service
-d uninstall      uninstall memcached service
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64
-M            return error on memory exhausted (rather than removing i
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory.  Note that there is a
              limit on how much memory you may lock.  Trying to
              allocate more than that would fail, so be sure you
              set the limit correctly for the user you started
              the daemon with (not for -u <username> user;
              under sh this is done with 'ulimit -S -l NUM_KB').
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-b            run a managed instanced (mnemonic: buckets)
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48

Если при установке появляется ошибка «отсутствует MSVCR71.dll», то можно прочесть статью, где описывается способ борьбы с ней. Если коротко — надо скачать две dll бибилиотеки и скопировать их в папку C:/Windows/System32.

Установка сервера memcached

Запускаем сервер: Панель управления->Администрирование->Службы. Выбираем memcached Server, кликаем «Запустить службу». Также можно поставить тип запуска «Авто», чтобы сервер автоматически стартовал при загрузке системы.

Запуск сервера memcached

Теперь нам нужен клиент для работы с сервером. Здесь есть выбор: memcache и memcached. Под Windows мне удалось найти только расширение php_memcache.dll (для версии PHP 5.3), которое можно скачать здесь. Распаковываем php_memcache-2.2.6-5.3-vc9-x86.zip, кладем файл php_memcache.dll в директорию с расширениями PHP. У меня это C:/Program Files/php/ext. В php.ini прописываем:

extension = php_memcache.dll

Теперь остается создать скрипт с функцией phpinfo(). Запускаем этот скрипт и ищем на странице секцию Memcache. Если секция найдена, то memcache установлен и готов к работе:

Memcache установлен и готов к работе

Проверяем:

<?php
header( 'Content-Type: text/html; charset=windows-1251' );

// Создаём новый объект
$memcache = new Memcache();
// Соединяемся с нашим сервером Memcached
$memcache->connect('localhost', 11211) or die ('Не могу подключиться');

$version = $memcache->getVersion();
echo 'Версия сервера: '.$version;

// Закрываем соединение с сервером Memcached
$memcache->close();
?>

Пример использования:

<?php
header( 'Content-Type: text/html; charset=windows-1251' );

// Создаём новый объект
$memcache = new Memcache();
// Соединяемся с нашим сервером
$memcache->connect('localhost', 11211) or die ('Не могу подключиться');

// Пытаемся получить объект с ключом current_time
$time = @$memcache->get('current_time');
if ( empty($time) ) {
    // Если в кэше нет объекта с ключом current_time, создадим его
    // Объект current_time будет храниться 5 секунд и не будет сжат
    $time = date('H:i:s');
    $memcache->set('current_time', $time, false, 5);
}
echo 'Текущее время: '.$time;

// Закрываем соединение с сервером
$memcache->close();
?>

Скачать сервер memcached и расширение php_memcache.dll можно здесь.

Дополнительная информация:

Поиск: Memcached • PHP • Web-разработка • Windows • Установка • Настройка

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.