====== Денвер и 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. Проверяем запуск, рестарт и остановку Денвера.