Как установить memcached на windows

Обновлено: 05.07.2024


В результате применения информации, данной в этой статье, вы сможете установить и настроить сервер Memcached и нужное расширение php для взаимодействия с ним, а также сервис анализа и статистики phpMemcachedAdmin

Установка будет происходить под Debian с сервером бекенда Apache. Если у вас рабочая связка NGINX + php5-fpm, просто заменяйте в командах apache2 на php5-fpm
Рабочий инструментарий: файловый менеджер для подключения по ssh со встроенным редактором Far Manager или putty.

Для начала, нужно определить, как сконфигурирован PHP (вдруг Memcached уже установлен?)). Для этого в корне сайта временно создадим файл info.php с кодом

Как установить сервер Memcached

Перед установкой нужно обновить репозиторий

Теперь установим memcached и модуль php под него

Идёт установка. После её завершения проверяем, что получилось

В результате мы увидим что-то навроде

Теперь нужно перезагрузить Apache или php-fpm

Настройка Memcached

Теперь, когда сервер установлен, его надо поднастроить. Это не сложно и не займёт много времени

Закрываем Memcached от доступа извне

Как вы видите, memcached висит на 11211 порту по умолчанию. Так как в memcached нет встроенных механизмов аутентификации, то выходит, что любой может подсоединиться извне и использовать его в своих целях. Чтобы избежать этого, вы можете либо закрыть порт 11211 с помощью фаервола, либо сконфигурировать memcached-сервер, чтобы он мог использоваться только с локального хоста. Ниже описан последний способ.

    Открываем конфигурационный файл

И снова проверяем

В итоге мы должны увидеть подобное

Также, после всех изменений не забудьте перезапустить Apache

Увеличиваем объём рабочей памяти Memcached

По умолчанию, в Memcached отведено на использование 64 мегабайта оперативной памяти. Я увеличу до 1024, вы исходите из параметров вашего сервера

  1. Открываем конфигурационный файл
  2. Находим значение
  3. Меняем его на
  4. Перезапускаем memcached

Хранение сессий PHP в Memcached

Если одним сервером или кластером Memcached пользуются несколько разных сайтов, то они могут перехватывать сессии друг друга и получать доступ к аккаунтам их пользователей, что представляет собой потенциальную опасность

Можно ускорить php, перенеся хранилище сессий из hdd в оперативную память с помощью memcached

Вы должны знать, какое расширение php вы используете, memcache или memcached . Между ними есть разница, а уточнить, что стоит у вас, можно с помощью phpinfo(), тут есть тонкость в настройках, будьте внимательны

Способ для расширения memcache

  1. Открыть /etc/php5/mods-available/memcache.ini
  2. Добавить
  3. Перезагрузить apache

Способ для расширения memcacheD

  1. Открыть /etc/php5/mods-available/memcached.ini
  2. Добавить
  3. Перезагрузить apache

Проверка phpinfo

Кстати, также вы можете воспользоваться директивой php_value , чтобы настраивать не весь сервер глобально, а только конкретные сайты. Для этого, вы можете отредактировать .htaccess в корне вашего сайта

Готовый рабочий конфигурационный файл Memcached

Вы также можете настроить всё под свои потребности, конфигурационный файл содержит подробные комментарии:

Установка расширения memcache

Ниже пошагово указаны команды, с помощью которых вы сможете установить php-расширение memcache из консоли вручную

Перезагрузим Apache, чтобы изменения вступили в силу

Как проверить работу Memcached

Создадим в корне сайта файлик memcachetest.php и запишем туда следующий код

Установка и настройка phpMemcachedAdmin

Тут можно пойти несколькими путями: выделить отдельный домен или поддомен под работу этого сервиса. А можно сделать поддиректорию в рабочем сайте и поставить пароль на неё или настроить ограничение по IP. Я опишу последний способ с установкой пароля на папку как более простой.

Создаём директорию и переходим в неё

Скачиваем последнюю версию дистрибутива

Распаковываем и удаляем архив с дистрибутивом

Рекурсивно выставляем нужные права доступа в текущей директории

Создаём .htaccess для авторизации по паролю (в строку 4 вносите свой логин)

Вводите свой пароль.

В заключение

Рекомендую ознакомиться со статьёй про memcached. В ней раскрыта общая информация о нём и некоторые тонкости работы.
На этом всё. Если что непонятно, задавайте вопросы в комментариях

Имеются две основные проблемы, которые заставили меня написать эту заметку. Обе они упираются в крайне малую распространенность актуальных и рабочих версий вполне экзотических библиотек, собранных под ОС Windows.

  • Днем с огнем не найти php_memcache.dll
  • Даже если мы нашли php_memcache.dll, нам осталось немало сил приложить к поиску работающего с ним Memcached.

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

Установка

Процесс установки прост и отнимает не более нескольких минут времени

  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 и 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 минут.

под win7 для установки memcached командную строку нужно запустить от имени администратора

А зачем устанавливать memcached в качестве службы, разве не достаточно php_memcached.dll
К стати статью нужно обновить, и на последние версии php можно найти php_memcached.dll, или статья как и многие в интернете стянута откуда нибудь.

Александр, а кто у вас будет обслуживать запросы к серверу, если вы ограничитесь только dll файлом? Сами то пробовали?

Что касается статьи, то писал я ее сам и уже один раз обновлял. Второй раз не планирую, так как с выходом новых версий php или mc ничего принципиально не меняется. Суть задачи остается прежней и способ решения описан.

Да, должно работать. В любом случае, вы всегда можете создать тестовый скрипт и проверить на нем. Еще есть полезная утилита phpMemcachedAdmin.

сообственно про localhost я понял, а вот порт какойто странный, стоит ли его вообще указывать ?

[Memcache] Установка сервера и клиента Memcache (PHP) под Linux и Windows [Оригинал]

оглавление

ссылка

Глава 9 «Основные технологии PHP и лучшие практики»: использование и практика Memcached

1. Резюме

С развитием Интернета, особенно с появлением веб-сайтов, традиционные реляционные базы данных (MySQL, Oracle и т. Д.) Стали обнаруживать узкие места, и многие аспекты не могут удовлетворить наши требования.

  • Чрезвычайно параллельное чтение и запись в базу данных: обработка реляционных баз данных очень сложна и занимает много времени (например, синтаксический анализ операторов SQL, обработка транзакций и т. Д.). Если у вас высокий уровень одновременного чтения и записи реляционных баз данных (десятки тысяч обращений в секунду), Тогда реляционная база данных невыносима
  • Обработка больших данных: для некоторых веб-сайтов с большим трафиком ежедневно создаются десятки миллионов данных (например, Weibo). Для реляционной базы данных, если вы найдете запись в таблице данных с сотнями миллионов данных, Эффективность будет очень низкой

В этой ситуации, если вы используете Redis или Memcached, вы можете хорошо решить вышеуказанные проблемы.

Redis здесь не обсуждается, только Memcache.

Memcache - это высокопроизводительная система кеширования объектов с распределенной памятью с открытым исходным кодом, которая может быть применена к различным сценариям, требующим кэширования, и предназначена для ускорения работы веб-приложений за счет сокращения доступа к базе данных.

Memcache временно сохраняет данные, считанные из базы данных, в памяти и считывает их непосредственно из Memcache при следующем обращении к тем же данным. Поскольку данные в Memcache хранятся в памяти, скорость доступа особенно высока, но важные данные лучше всего хранить в базе данных или на жестком диске, чтобы предотвратить потерю данных Memcache после сбоя питания.

В общем понимании, Memcache на самом деле является базой данных только с одной таблицей: база данных имеет только два поля, одно является ключевым первичным ключом, а другое - значением-значением.

Memcache делится на сервер и клиент

Во-вторых, сервер

Существует два сервера Memcache: один Memcache, другой Memcache, последний новее первого и имеет больше функций. Кроме того, Memcache перестал обновляться. Так что обычно используйте Memcached в качестве сервера

Memcached - это высокопроизводительный сервер кеша распределенной памяти. Общая цель использования - уменьшить количество обращений к базе данных, кэшируя результаты запросов к базе данных, чтобы повысить скорость и масштабируемость динамических веб-приложений. Имеет следующие характеристики:

  • Простой протокол: Memcached сервер-клиент не использует сложные XML и другие форматы, но использует простые текстовые протоколы
  • Обработка событий на основе libevent: libevent - это программная библиотека, которая объединяет обработку времени, такую ​​как epoll для Linux и kueue для операционных систем BSD, в единый интерфейс. Memcached использует эту библиотеку libevent, поэтому она обеспечивает высокую производительность в Linxu, BSD, Solaris и других операционных системах.
  • Метод хранения во встроенной памяти: для повышения производительности данные, сохраненные в Memcached, хранятся во встроенной памяти. Поскольку данные существуют только в памяти, перезапуск операционной системы приведет к исчезновению всех данных. Кроме того, после того как емкость содержимого достигнет указанного значения, Memcached автоматически удалит неиспользуемый кеш
  • Memcached не взаимодействует друг с другом: Memcached - это сервер распределенного кэша, но сервер не имеет распределенной функции. Каждый Memcached не связывается друг с другом для обмена информацией. Его распространение в основном осуществляется через клиент.


Memcached запускается на одном или нескольких серверах как процесс-демон и принимает операции подключения от клиентов в любое время.Клиенты могут быть написаны на разных языках, таких как Perl, PHP, Python, Ruby, Java, C и т. Д. После того, как клиент установит соединение с сервисом Memcached, следующим будет доступ к объекту. Каждый сохраненный объект имеет уникальный ключ идентификатора, связанный с ним, и к объекту можно получить доступ через ключ. Объекты, хранящиеся в Memcached, фактически помещаются в память, поэтому Memcached настолько эффективен и быстр.

На данный момент (2019-10-26) последняя стабильная версия Memcached: 1.5.19

Примечание. Официальной поддержки версии для Windows нет, но вы все равно можете использовать другие методы для загрузки и установки.

1. Установка Linux

Здесь берет Centos7 в качестве примера

A. Установите libevent-dev

Поскольку Memcached зависит от библиотеки libevent, сначала необходимо установить libevent-dev

Б. Установите Memcached

Есть два способа установить Memcached:

  • Скомпилируйте и установите
  • Используйте инструменты управления зависимостями yum, apt-get и т. Д. (Рекомендуется)

Скомпилируйте и установите:

При компиляции, если вы не указываете место установки, оно устанавливается по умолчанию в / usr / local / bin. Здесь место установки изменяется на: / usr / local / memcached

Примечание. Если он скомпилирован и установлен, рекомендуется использовать systemctl для управления службой Memcached после завершения установки:

Новый сервис Memcached

Затем вы можете использовать systemctl для управления memcached

Если вы не используете systemctl, вы можете использовать следующую команду для запуска:

Общие параметры запуска:

  • -d: запускаться как поток демона
  • -l: установить IP-адрес мониторинга, если это локальный компьютер, устанавливать его не нужно
  • -p: установить номер порта прослушивания, по умолчанию 11211
  • -m: установить используемый объем памяти, в единицах M
  • -u: назначенный пользователь
  • -c: установить максимальное количество одновременных подключений, по умолчанию 11211
  • -vv: напечатать запрос клиента и вернуть информацию, обычно используемую для отладки

Другие команды можно найти с -h

Примечание. После завершения установки yum systemctl будет использоваться по умолчанию для управления службой memcached.

C. Убедитесь, что установка прошла успешно

D. Конфигурационный файл

нота: Только yum зависит от установки, сгенерирует файл конфигурации, при компиляции и установке файла конфигурации нет

Файл конфигурации Memcached по умолчанию находится по адресу: / etc / sysconfig / memcached

Как правило, не должны быть изменены

E. Загрузка и загрузка

Убедитесь, что он работает:

F. Telnet соединение

Вы можете подключиться к серверу memcached через telnet для хранения и сбора данных.

Несколько простых операций:

2. Установка Windows

Официальной поддержки версии для Windows нет, но есть способ

Скачайте в нем соответствующую версию memcached

На данный момент версия memcached под Windows: 1.5.19

После завершения загрузки запустите из командной строки в каталоге memcached:

Команды эквивалентны командам Linux

Примечание. До версии memcached 1.4.5 ее можно установить как службу, то есть она запустится автоматически и будет запускаться прямо в каталоге memcached с правами администратора:

Затем вы можете использовать команды для включения и выключения:

Однако, это не будет работать в 1.4.5 и более поздних версиях, вам нужно использовать план задач для запуска обычного процесса и настроить memcached для автоматического выполнения при запуске Window.

В-третьих, клиент-PHP

Memcache поддерживает несколько клиентов, таких как perl, php, Python, c / c ++, Java и т. Д. Здесь конфигурация в основном основана на php.

Есть два расширения memcache для PHP:

Чиновник прекратил обновление, последняя стабильная версия - версия 3.0.8, выпущенная 2013-04-07, и предоставляет расширенную загрузку для Windows, но поддерживает только PHP 5.6, не поддерживает версию PHP7 +

По сравнению с memcache это расширение поддерживает больше функций и протоколов, чем memcache, и версия является относительно новой, поддерживается и имеет более мощные функции. Кроме того, расширение memcache находится под распределенными данными чтения и высокой степенью параллелизма. Есть некоторые проблемы со стабильностью, поэтому рекомендуется использовать memcached в качестве расширения PHP

Последней стабильной версией является версия 3.1.4, выпущенная 2019-10-06

Примечание: 3.x поддерживает PHP 7.0-7.4, 2.x поддерживает PHP 5.2-5.6

1. Установка Linux

A. Установите libmemcached

Расширение memcached в php основано на libmemcached, поэтому сначала установите libmemcached

Б. Установите memcached

C. PHP добавить расширение

D. Перезапустите Apache или Nginx

Вы также можете проверить успех, посетив страницу phinfo


2. Установка Windows

Выберите соответствующую DLL в соответствии с версией PHP, а затем поместите ее в каталог ext в каталоге установки php

Добавлено в php.ini:

Перезапустите Apache или Nginx

Вы также можете проверить успех, посетив страницу phinfo


Примечание: здесь memcache не memcached

3. PHP тест Memcached

После сохранения браузер заходит, вы можете увидеть вывод if, а затем закомментировать $ mem-> set ('name', 'lf'), а затем перейти к посещению и посмотреть, можете ли вы вывести if, если ok нормально

Вы также можете telnet, чтобы увидеть:

Как видите, для имени есть значение, указывающее, что оно нормально

нота: Если это под Windows, класс Memcached отсутствует, вам нужно установить расширение memcache, используйте: класс Memcache , Который изменен на:

Поэтому при инкапсуляции класса Memcache в PHP обратите особое внимание на этот момент. Кроме того, метод Memcached в основном включает в себя метод Memcache, который совместим

Интеллектуальная рекомендация


Краткое описание общих функций MPI

содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.

Примечание 9: EL выражение


JVM память

концепция Виртуальная машина JVM управляет собственной памятью, которая разделяет память во многие блоки, наиболее распространенной для памяти стека и памяти кучи. 1 структура виртуальной машины JVM H.

Проблема сетевого запроса на Android 9.0

вЗапустите Android 9 (API Уровень 28) или вышеНа устройстве операционной системы Android, чтобы обеспечить безопасность пользовательских данных и устройств, использование по умолчанию для зашифрованно.


Учебная запись по Webpack (3) В статье рассказывается о создании webpack4.0.

предисловие Для изучения веб-пакета автор также предпринял много обходных путей. Есть много вещей, которые я хочу знать, но я не могу их найти. Автор поможет вам быстро начать работу. Цель этой статьи.

Решение 1. Установите Memcached для Windows (v1.4.5)

CMD-Memcached-старт

Это самый очевидный способ сделать это. Мне понадобилось совсем немного времени, чтобы найти нужные файлы, поэтому я включил ссылки, которые использовал:

  • Загрузите стабильную версию, либо в 32-битный или 64-битный Я протестировал 64-битную версию.
  • Создайте каталог, такой как c: memcached (или что-то еще)
  • Скопируйте содержимое .zip в этот каталог. Должен быть один файл memcached.exe (32-разрядный) или пара DLL-файлов (64-разрядный)
  • Откройте командную строку (необходимо открыть как администратор). Вы можете сделать это, выбрав «Пуск»> «Поиск» и введите «cmd»
  • Введите команду «c: memcached memcached.exe -d start», Чтобы начать службу
  • Введите команду «c: memcached memcached.exe -d stop», Чтобы остановить службу
  • Чтобы изменить размер пула памяти, введите «c: memcached memcached.exe -m 512»Для 512 МБ

Ваша служба Memcached теперь должна работать и ждать входящих пар ключ / значение.

ВАЖНЫЕ ЗАМЕТКИ:

1– Если вы хотите использовать это в локальном веб-приложении, вы должны убедиться, что ваш язык имеет встроенную поддержку Memcached. Например, PHP может потребовать установки дополнительных библиотек и модификаций файла конфигурации php.ini. Если есть спрос, я тоже напишу объяснение.

3– Введите команду «c: memcached memcached.exe -d install», чтобы Memcached запускался после перезагрузки. Теперь вы должны увидеть Memcached в качестве службы Windows на панели управления. ВАЖНО: если вы решите установить его как сервис, вы потеряете возможность изменять размер пула через командную строку. Вам нужно будет отредактировать ключ реестра следующим образом:

  • Запустите regedit через Пуск> Поиск
  • Найдите «HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services memcached»
  • Измените «-m VALUE» на количество нужных мегабайт «-m 512» = 512 МБ.

Решение 2. Установите Couchbase вместо Memcached

Возможно, вы не слышали об этом, но Couchbase это JSONхранилище документов, но также имеет интерфейс хранилища ключей / значений в памяти, который совместим с Memcached, Это означает, что вы можете установить Couchbase для Windows и настроить его так же, как Memcached. Круто то, что он поставляется с классным графическим интерфейсом и обычным установщиком Windows.

Couchbase также имеет отличный механизм восстановления после отказа и управление кластером, которого нет в Memcached, но это немного выходит за рамки этой статьи.

  1. Перейти к Couchbase страница загрузки
  2. Выберите установщик Windows
  3. Запустите установочный файл

В целях Memcached вы можете игнорировать настройки дискового хранилища, так как вы создадите пул памяти. Просто оставьте все как есть.

Выберите «запустить новый кластер» и выберите объем оперативной памяти, который вы хотите использовать. Подойдет что-нибудь между 64 и 512 МБ. Это действительно ваше дело, и вы можете изменить это позже. Нажмите Next и проигнорируйте Sample buckets. Нажмите Далее еще раз.

Это еще один важный экран. Здесь вы создадите пул памяти. Убедитесь, что вы выбрали тип корзины Memcached. Для эмуляции Memcached вы, вероятно, не Нужно включить реплики. Но вы должны включить команду Flush. Нажмите Next.

Вывод

Теперь у вас есть два надежных способа установки Memcached на машины Windows. В целях разработки мне нравится Couchbase, но если вы хотите что-то более легкое, оригинальный порт Memcache для Windows не может быть лучше. Если у вас есть дополнительные вопросы, просто оставьте комментарий, и я сделаю все возможное, чтобы ответить. Спасибо, что прочитали это.


Прежде всего проверяем не установлено ли данное php-расширение. Для этого можно выполнить строку кода
Если блок с названием memcache отсутствует, значит нужно устанавливать.

Установка memcache под Windows в качестве php-расширения.
  • vc14 & vc15
  • x86 & x64
  • ts & nts

Первый параметр смотрим в графе Compiler.
Второй в графе Architecture.
Третий в графе PHP Extension Build.

Скачиваем нужный dll файл, например из папки vc14/x86/ts.
Переименовываем файл в php_memcache.dll и перемещаем в папку ext что в каталоге с вашей версией php.

Так же скачать memcache можно этой ссылке.

Далее включаем php_memcache в php.ini, добавив строку:
Перезагружаем сервер.
Проверяем появился ли раздел «memcache» в выводе функции phpinfo();

Сервер memcached.

Скачиваем сервер memcached.
Для linux по ссылке, там архив с примером установки.

Для Win например от сюда.
Если используется OpenServer, то там он уже присутствует в папке OpenServer\modules\memcached . Выбираем папку с более новой версией и кликаем по файлу memcached.exe для запуска. При этом появится окошко которое должно быть открыто пока сервер memcached запущен.
Так же можно запустить из командной строки. Для этого в командной строке переходим к папке с файлом:
и запускаем вводом названия exe файла:

Список всех доступных команд:

В настройках OpenServerа указывается порт, который будет использовать memcached:


Оставляем без изменений. А на закладке «Разное» указывается объем памяти который выделен для memcached.
После этого уже можно кэшировать.

Примеры использования.

Стандартный пример использования memcache:

В данном примере примеры кэширования строк, чисел, объектов и массивов.
Первой строкой создается соединение. Далее два основных метода для работы – set для записи данных, get для чтения.

bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
Memcache::set() записывает элемент со значением var на сервере memcache с указанным ключем key.

При указании MEMCACHE_COMPRESSED для поддержки сжатия "на лету", нужно проверить включен ли zlib в php.ini:

Другой способ создания подключения с сервером memcache и использованием метода set:

Memcache::get ( string $key [, int &$flags ] )
Memcache::get() возвращает ранее сохраненный элемент с ключем key если он в данный момент существует на сервере.

Читайте также: