Содержание

Денвер и memcached

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

Вся установка пройдет в три этапа:

  1. Установка расширения memcache для PHP.
  2. Установка сервера memcached.
  3. Проверка работы сервера.
  4. Привязка запуска и остановки сервера memcached к запуску и остановке Денвера.

Внимание! Работать мы будем с папкой в которую вы установили Денвер, а не с виртуальным диском, который создает Денвер. Это критично для установки служб Windows. Для краткости обозначим путь к этой папке как [Денвер].

Установка расширения memcache

Первое что нужно сделать это найти и скачать расширение для PHP. Скажу сразу ссылки постоянно меняются, старые отваливаются, новые появляются. Рекомендую начать с pecl.php.net. Только внимательно смотрите, что вы скачиваете, т.к. это репозиторий для unix-подобных систем (хотя вы можете скачать исходник и скомпилировать свою библиотеку). Библиотеки для систем Windows помечены соответствующим логотипом.

Но если вам не критична версия библиотек, то можете скачать их тут (PHP 5.3): php_memcache-2.2.6-5.3-vc9-x86.zip.

Файл php_memcache.dll из архива переносим в папку расширений PHP ([Денвер]/usr/local/php5/ext/).

Открываем файл php.ini ([Денвер]/usr/local/php5/php.ini) и добавляем следующую строку:

extension=php_menchace.dll

Я рекомендую внести ее в блок Dynamic Extensions, в алфавитном порядке.

Теперь пробуем запустить Денвер. Если запуск произошел без ошибок, то расширение заработало, иначе ищите другую библиотеку.

При запуска команды phpinfo() в выводе появится новый блок «Memcache».

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

Сервер memcached будет установлен как служба Windows.

С поиском дистрибутива memcached под Windows проблем будет еще больше чем с расширением. Рекомендую начать с memcached.org.

И опять-таки, если не принципиально иметь последнюю версию, то сервер можно скачать тут: memcached-1.2.4-win32-preview-20080309_bin.zip

Помещаем все содержимое архива в папку [Денвер]/usr/local/memcached.

Открываем утилиту cmd (WinXP: Пуск → Выполнить → cmd; Win7: Пуск, в строке поиска набираем cmd и через правую клавишу «Запуск от имени администратора»). И переходим в утилите в папку [Денвер]/usr/local/memcached.

Для тех кто не помнит/не знает dos команд:
<Буква диска>: - переход на указанный диск (к примеру, D:).
cd <папка1>/<папка2>/<папка3> - переход в указанную папку (к примеру, cd web/usr/local/memcached).

Находясь в папке с сервером набираем следующую команду:

memcached.exe -d install

Эта команда установит службу Memcached. Проверить работу службы можно командами:

memcached.exe -d start
memcached.exe -d stop

Если проблем с запуском нет, то все хорошо и можно работать. Иначе ищем другой сервер (перед установкой нового сервера не забываем удалить старый: memcached.exe -d remove).

Проверка работы сервера

Для проверки сосздаем и запускаем простой PHP скрипт:

PHP:
 
<?php
  $memcache = new Memcache();
  $memcache->connect('127.0.0.1', 11211);
  echo $memcache->getVersion();

Если после запуска скрипта вы увидели циферки и точечки, то все хорошо, иначе правим ошибки.

Привязка службы Memcached к Денверу

Служба будет запускаться всякий раз как запускается система. Однако кто-то не захочет чтобы процесс всегда висел и поедал ресурсы, а каждый раз запускать и останавливать службу вручную, тоже на до сказать не выход. Поэтому давайте привяжем запуск и остановку службы к Денвер.

Первое, что нужно сделать, это запретить автоматический запуск службы. Для этого нажимаем правой клавишей на «Мой компьютер» и выбираем пункт «Управление».

Далее «Службы и приложения» → «Службы» → ищем в списке «memcached Server», двойной клик. В разделе «тип запуска» выбираем «Вручную».

Теперь идем в папку [Денвер]/denwer/scripts/init.d/ и создаем файл memcached.pl, в который вносим следующий текст:

#!perl -w
package Starters::Memcached;
BEGIN { unshift @INC, "../lib"; }

use StartManager;

my $basedir = '/usr/local/memcached/';
chdir($basedir);

StartManager::action 
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
        print "Starting memcached\n";
        system("memcached.exe -d start");
        print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
        print "Stopping memcached\n";
	system("memcached.exe -d stop");
        print "  Stopped!\n";
  };

return 1 if caller;

Далее идем в папку [Денвер]/denwer/scripts/main/start и смотрим на файлики. Порядок следования файлов - это порядок запуска служб. Поэтому выбираем любой порядковый номер и создаем файл <номер>_mamcached (к примеру, 15_memcached) и вносим в него следующий текст:

init.d/memcached

Теперь копируем этот файл в папки [Денвер]/denwer/scripts/main/stop и [Денвер]/denwer/scripts/main/restart.

Проверяем запуск, рестарт и остановку Денвера.