Как установить Memcached + PHP под Windows для веб-мастера, PHP, AJAX, MySQL

Автор m0ne, 2011 Сен. 10, 02:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] phpwindowsmemached

m0ne

Вступление
В принципе, вступление тут вовсе не требуется, но так уж получается, что не могу я не налить воды. Зато во вступлении могу заранее предупредить, что мы будем не просто ставить Memcached, но и пытаться подружить его с PHP, и все это под всеми любимой ОС Windows. Именно эти нюансы рождают проблему и решение, описанные ниже.

Кто-то может задать вполне резонный вопрос — а зачем под Windows? Могут дать вполне резонный ответ — а вот нужно. Нужно это бывает тогда, когда программист и швец и жнец, и на дуде игрец.

Во-первых, если приходится писать не только программный код, но и решать вопросы верстки, а это весьма частый случай, то без Photohop'а и старого доброго IE никуда, а они в свою очередь как-то не прижились под линуксами. Во-вторых, как не крути, а линуксы не всем такие родные, как продукт дядюшки Билла.

В чем же сложность?
У нас имеются две проблемы, которые заставили меня написать этот материал. Обе они упираются в такую малую распространенность актуальных и рабочих версий вполне экзотических библиотек, собранных под ОС Windows.
* Днем с огнем не найти php_memcache.dll
* Даже если мы нашли php_memcache.dll, нам осталось немало сил приложить к поиску работающего с ним Memcached.

Библиотеку php_memcache.dll я нашел в pecl версии 5.2.6-Win32. И, судя по всему, это последняя существующая версия pecl для Windows, во всяком случае, более поздних я не видел. Конечно, все это не проблема, если есть желание/время/возможность собрать библиотеку из исходников, но не об этом речь.

Библиотекой для PHP мы обзавелись (ссылки на скачивание в конце статьи), осталось скачать сам демон. На момент написания статьи, из стабильных версий для скачивания доступна 1.2.8, но вот беда, упомянутая библиотека с ней конфликтует. Благо на винте была более ранняя версия демона, а именно 1.2.1. Версия, конечно, старовата и, если почитать change-log, многого лишена, но для отладки чего-либо не очень сложного вполне должно хватить. Опять же, если не хватит, то вперед и с песней идем компилировать библиотеку для PHP.

Установка
Процесс установки до безобразия прост и по объему описания в несколько раз меньше чем то, что я уже написал.

1. Распаковываем Memcached в любую удобную вам папку
2. С помощью командной строки (Пуск > Выполнить > cmd) запускаем установку Memcached
Цитироватьmemcached.exe -d install
3. Заходим в Панель управления > Администрирование > Службы (в Windows Vista нечто аналогичное), ищем memcached Server и запускаем его. Также можно поставить тип запуска «Авто», дабы сервер автоматически стартовал при загрузке системы.
4. В директории, где у нас лежит PHP, в папку ext кладем php_memcache.dll
5. В файле 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-121-win32.zip (88.96 KB)
php_memcache.dll (48.07 KB)

Похожие темы (5)