Вступление:
В принципе, вступление тут вовсе не требуется, но так уж получается, что не могу я не налить воды. Зато во вступлении могу заранее предупредить, что мы будем не просто ставить 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:
3. Заходим в Панель управления > Администрирование > Службы (в Windows Vista нечто аналогичное), ищем memcached Server и запускаем его. Также можно поставить тип запуска «Авто», дабы сервер автоматически стартовал при загрузке системы.
4. В директории, где у нас лежит PHP, в папку ext кладем php_memcache.dll
5. В файле php.ini, в секцию, где подключаются расширения добавляем строку:
Теперь остается создать скрипт с функцией phpinfo(). Запускаем этот скрипт и ищем на странице секцию Memcache. Если секция найдена, то memcache установлен и готов к работе.
Последний нюанс:
При подключении к серверу memcache из скрипта, как правило, указывают localhost, во всяком случае, в данном примере это будет именно так, потому, что демон мы установили на локальную машину. Но, я настоятельно рекомендую указывать ip-адрес в качестве хоста – 127.0.0.1. Дело в том, что в Windows Vista по-умолчанию включена поддержка протокола IPv6, но, как известно, далеко не все умеют с ним работать, и memcache именно тот случай. Если указать localhost, memcache пожалуется на то, что не может отрезольвить ip для указанного хоста.
Когда сам столкнулся с этой проблемой, долго ломал голову над тем, в чем же может быть дело, пока не сделал ping localhost -t.
В принципе, вступление тут вовсе не требуется, но так уж получается, что не могу я не налить воды. Зато во вступлении могу заранее предупредить, что мы будем не просто ставить 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 -t.
Вам необходимо зарегистрироваться для просмотра ссылок