Memcached + PHP под Windows
Имеются две основные проблемы, которые заставили меня написать эту заметку. Обе они упираются в крайне малую распространенность актуальных и рабочих версий вполне экзотических библиотек, собранных под ОС Windows.
- Днем с огнем не найти php_memcache.dll
- Даже если мы нашли php_memcache.dll, нам осталось немало сил приложить к поиску работающего с ним Memcached.
Библиотеку php_memcache.dll я нашел в pecl версии 5.2.6-Win32. И, судя по всему, это последняя существующая версия pecl для Windows, во всяком случае, более поздних я не видел. Конечно, все это не проблема, если есть желание/время/возможность собрать библиотеку из исходников, но не об этом речь.
Установка
Процесс установки прост и отнимает не более нескольких минут времени
- Распаковываем Memcached в любую удобную вам папку
- С помощью командной строки (Пуск > Выполнить > cmd) запускаем установку Memcached
memcached.exe -d install - Заходим в Панель управления > Администрирование > Службы (в Windows Vista нечто аналогичное), ищем memcached Server и запускаем его. Также можно поставить тип запуска «Авто», дабы сервер автоматически стартовал при загрузке системы.
- В директории, где у нас лежит PHP , в папку ext кладем php_memcache.dll
- В файле php.ini, в секцию, где подключаются расширения добавляем строку
extension = php_memcache.dll
Теперь остается создать скрипт с функцией phpinfo(). Запускаем этот скрипт и ищем на странице секцию Memcache. Если секция найдена, то memcache установлен и готов к работе.
При подключении к серверу memcache из скрипта, как правило, указывают localhost, во всяком случае, в данном примере это будет именно так, потому, что демон мы установили на локальную машину. Но, я настоятельно рекомендую указывать ip-адрес в качестве хоста – 127.0.0.1. Дело в том, что в Windows Vista по-умолчанию включена поддержка протокола Ipv6, но, как известно, далеко не все умеют с ним работать, и memcache именно тот случай. Если указать localhost, memcache пожалуется на то, что не может отрезольвить ip для указанного хоста.
Когда сам столкнулся с этой проблемой, долго ломал голову над тем, в чем же может быть дело, пока не сделал ping localhost
Файлы Memcached и DLL
Из комментариев старого блога:
- Можно попробовать использовать сервер версии 1.2.6. Говорят, работает с той же версией DLL, что была использована мной.
- Читатель с именем [d]bykadorov поделился ссылкой на более новые версии dll, совместимые с последними версиями сервера Mc. По его словам, они позволили ему собрать связку Memcached + PHP 5.3
- Если при установке появляется ошибка MSVCP71.dll is missing, то можно прочесть статью Fix Msvcp71.dll And Msvcr71.dll Missing Error In Windows 7, где описывается способ борьбы с ней.
Комментарии (11)
Большое спасибо! Полгода назад потратил целый день, чтобы найти файлы и настроить мемкэш. Сейчас снова понадобилось поднять на другой машине, по Вашей инструкции сделал это за 5 минут.
Если расширение не устанавливается под Windows, попробуйте LiteMemcache — самый легковесный клиент для Memcached, написанный на PHP. Реализована вся необходимая функциональность (включая CAS-операции). Покрыт юнит-тестами.
под win7 для установки memcached командную строку нужно запустить от имени администратора
А зачем устанавливать memcached в качестве службы, разве не достаточно php_memcached.dll
К стати статью нужно обновить, и на последние версии php можно найти php_memcached.dll, или статья как и многие в интернете стянута откуда нибудь.
Александр, а кто у вас будет обслуживать запросы к серверу, если вы ограничитесь только dll файлом? Сами то пробовали?
Что касается статьи, то писал я ее сам и уже один раз обновлял. Второй раз не планирую, так как с выходом новых версий php или mc ничего принципиально не меняется. Суть задачи остается прежней и способ решения описан.
Спасибо за инструкцию, увы но нашёл я её слишком поздно, пару часов мучался собирал всё по кусочкам со всех блогов, и везде написано по разному и файлы разные сували, в итоге всё как у Вас написано и получилось, прям один в один и ошибка MSVCP71.dll даже была =) а если не сложно скажите пожалуйста, у меня DLE движок стоит, там указано кешировать memcache, и данные для подключения localhost:11211, правильно ли настроено ? я даже не могу определить включен ли кеш с этими настройками в DLE, так как ни каких сообщений он не выдаёт, заранее спасибо!
Да, должно работать. В любом случае, вы всегда можете создать тестовый скрипт и проверить на нем. Еще есть полезная утилита phpMemcachedAdmin.
сообственно про localhost я понял, а вот порт какойто странный, стоит ли его вообще указывать ?
Да, указывайте. Это дефолтный порт, который слушает демон.
Устанавливаем memcached на Windows 7
Для начала давайте разберемся, что такое memcached и нужен ли он веб разработчику.
Ответ, на мой взгляд, абсолютно однозначен: нужен, да еще как! Memcached — это надстройка PHP, разработанная для сохранения данных в оперативной памяти с последующим облегченным доступом к ним. По слухам, была сделана изначально для сервиса Живого Журнала, но тут не уверен, может так, может нет 🙂 Если создавать веб приложения с учетом их работы с memcached, можно снизить нагрузку на ресурсы сервера в разы. Например, результаты суровых мегамощных запросов к базе, из-за которых частенько раздражаются хостеры и, в период пиковых нагрузок, тормозит сайт, помещенные в оперативную память, позволяют каждый раз не насиловать сервер дополнительной нагрузкой, а ограничиться использованием уже готового обработанного результата, который смирно ждет внимания к себе, находясь в оперативке.
Будучи поклонником Endels, конечно же, я озадачился вопросом, как бы всю эту красоту развернуть локально. Являясь пользователем Windows 7 x 64, мне пришлось перелопатить некоторое количество информации в Сетке, чтобы найти правильную библиотеку .dll (о да, иногда они почему то начинают кривляться и не работать) и сформировать некоторый пошаговый перечень установки сервиса.
Здесь вы можете качнуть архив с необходимыми файлами. Повторюсь, все что в этом архиве — это результат проб и ошибок, который подошел для моей сборки винды, на тот момент это была Профессиональная, а так же заработавший в версии Максимальная. Для удобства установки (но, конечно, дело хозяйское) я так же использовал любимый многими FAR.
1. Создаем папку usr\local\memcached и копируем в нее файлы из архива
2. Копируем файл php_memcache.dll в usr\local\php5.4\ext
3. В php.ini в папке usr\local\php5.4 добавляем секцию
4. Вот тут мне пригодился FAR, чтобы не мучиться с набором ручками пути к файлу. Устанавливаем службу memcached из командной строки, находясь в директории memcached.
memcached.exe -d install
Если результат вышеприведенной инсталляции — ошибка, то пробуем установить службу с помощью файла nssm.exe из нашего архива. Пишем в командной строке
nssm.exe install memcached.exe
далее выбрать application — nssm.exe
Результат для обеих манипуляций должен быть един: служба memcached должна появиться в общем списке служб. Зайдите в Пуск — Панель управления — Администрирование — Службы и убедитесь в этом
По идее должен приключиться вуа-ля 🙂
P.S. Если по каким то обстоятельствам вам потребовалось удалить службу, то вначале останавливаем ее, а затем набираем в командной строке
sc delete memcached.exe
Сайт интернет-магазина детских товаров «Бэбик Бум»
Сайт «Политком.RU» версия 2
Сайт Экспертно-консультативного совета при Главе Республики Крым
Сайт интернет-издания «Черноморско-каспийский курьер»
Сайт фирмы по созданию и размещению наружной рекламы «Компаньон»
Сайт фирмы по юридическому сопровождению сделок с недвижимостью «СТ-Консалт»
Сайт форума владельцев коттеджей Подмосковья «Мой дом»
Сайт коттеджного поселка «Шоколад»
Сайт девелопера полного цикла «Ст.ГРУППА» (вторая версия)
Сайт Института Каспийского Сотрудничества (вторая версия)
Cайт компании «Ст.ХОУМ»
Сайт интернет-магазина «ИкроТорг»
Сайт дачного поселка «Ивановский лес»
Сайт коллекционера Александра Медведева
Сайт «Выбор Будущего: создай свое наследие»
Сайт КРОС — ЕСо: emerging communications
Сайт девелопера полного цикла «Ст.ГРУППА» (первая версия)
Сайт качественной системы снабжения «Ст.СНАБ»
Сайт агентства недвижимости «Ст.РЕАЛ»
Сайт рыбоводной компании «Акватрейд»
Сайт программно-аппаратного комплекса диагностики ESTECK
Авторский сайт писателя Игоря Тышецкого
Сайт интернет-журнала «Институт Наследия»
Сайт коттеджного поселка «Радуга»
Сайт коттеджного поселка «Лесная Бухта» (первая версия)
Сайт салона красоты «Твой стиль»
Сайт ФГУП «Нацрыбресурс» (вторая версия, дизайн)
Сайт-визитка компании «Промуголь»
Сайт программы поддержки ипотечных заемщиков
Сайт Совета Безопасности РФ (версия дизайна)
Сайт гражданского движения «Остальная Россия» (дизайн)
Сайт Московской Академии Предпринимательства (вторая версия)
Сайт интернет-магазина «Сантехника 848» (дизайн)
Сайт Института Каспискойго Сотрудничества (первая версия)
Сайт города Ильичевска (Украина)
Сайт портала акций и распродаж «Дайте Скидку»
Сайт Московской Академии Предпринимательства (первая версия)
Сайт ФГУП «Нацрыбресурс» (первая версия)
Сайт МВД по Чеченской Республике
Сайт клуба знакомств «Фортуна»
Сайт Российского ресурсного центра учебных кейсов
Сайт коллекции женской одежды «MESSAGE»
Сайт социального портала «Терпения НЕТ»
Сайт Международной Рыбопромышленной Биржи
Сайт Главы и Правительства Чеченской Республики
Сайт службы заказа такси «Такси Гепард»
Сайт Федерального агентства по рыболовству
Сайт производителя элитной мебели «Мебель-альянс» (дизайн)
Сайт Алексея Ивлиева, коллекционера ципрей
Сайт Рамзана Кадырова
Сайт французского диагностического кабинета «Check Me»
Сайт Фонда стратегического исследования «Азия Стратегия»
Сайт певицы Жени Тополь
Сайт политических комментариев «ПОЛИТКОМ.РУ»
Сайт флористической мастерской «Золотая Камелия»
Сайт Экономико-правовой экспертизы
Сайт магазина по продаже паркета, краски «ИНКАТЕК» (дизайн)
Сайт экспертного портала «Телеком-Эксперт»
Сайт гомеопатической фирмы «ЭДАС»
Сайт системы диагностики «DDFAO»
Сайт «Евростеллажа»
Сайт политтехнолога и консультанта Дмитрия Орлова
-
Логотип фирмы «Интеллектуальные Технологии»
-
Логотип коттеджного поселка «Радуга»
-
Логотип онлайн-издания «Черноморско-каспийский курьер»
-
Логотип коттеджного поселка «Шоколад»
Визитка «Лесная Бухта»
Рекламная компания «Компаньон»
Охранная фирма «Каскад-Спец»
Рыбоводная Компания «Акватрейд»
Рекламный модуль «Лесная Бухта» для журнала
Лифлет фирмы «СТ-Дизайн»
Этикетки для банок икры рыбоводной компании «Акватрейд»
Биллборд коттеджного поселка «Шоколад»
Биллборд коттеджного поселка «Лесная Бухта»
Биллборд коттеджного поселка «Шоколад»
Биллборд коттеджного поселка «Шоколад»
Биллборд коттеджного поселка «Лесная Бухта»
Биллборд коттеджного поселка «Шоколад»
Рекламный модуль «СТ-Дизайн» для журнала
Биллборд фирмы «СТ-Дизайн»
Биллборд фирмы «СТ-Дизайн»
Контакты
Если у Вас есть вопросы или Вы хотите оставить заявку на разработку, свяжитесь с нами по указанному телефону, электронной почте или воспользуйтесь формой: