====== Денвер и memcached ======
[[wp>Memcached|Memcached]] — связующее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти. Используется для снижения нагрузки на сервер базы данных.
Вся установка пройдет в три этапа:
- Установка расширения memcache для PHP.
- Установка сервера memcached.
- Проверка работы сервера.
- Привязка запуска и остановки сервера memcached к запуску и остановке Денвера.
Внимание! Работать мы будем с папкой в которую вы установили Денвер, а не с виртуальным диском, который создает Денвер. Это критично для установки служб Windows. Для краткости обозначим путь к этой папке как [Денвер].
===== Установка расширения memcache =====
Первое что нужно сделать это найти и скачать расширение для PHP. Скажу сразу ссылки постоянно меняются, старые отваливаются, новые появляются. Рекомендую начать с [[http://pecl.php.net/package/memcache|pecl.php.net]]. Только внимательно смотрите, что вы скачиваете, т.к. это репозиторий для unix-подобных систем (хотя вы можете скачать исходник и скомпилировать свою библиотеку). Библиотеки для систем Windows помечены соответствующим логотипом.
Но если вам не критична версия библиотек, то можете скачать их тут (PHP 5.3): [[http://oleg.zorin.ru/files/denwer/php_memcache-2.2.6-5.3-vc9-x86.zip|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 проблем будет еще больше чем с расширением. Рекомендую начать с [[http://memcached.org/|memcached.org]].
И опять-таки, если не принципиально иметь последнюю версию, то сервер можно скачать тут: [[http://oleg.zorin.ru/files/denwer/memcached-1.2.4-win32-preview-20080309_bin.zip|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:
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.
Проверяем запуск, рестарт и остановку Денвера.