memcached php что такое
Memcached php что такое
Пример #1 Пример использования модуля memcache
В этом примере происходит сохранение объекта в кеше и его последующее чтение. Объекты и другие нескалярные типы сериализируются перед сохранением, что делает невозможным хранение ресурсов (например, идентификаторов подключений и др.) в кеше.
Пример #2 Использование memcache в качестве обработчика сессий
User Contributed Notes 3 notes
moderator please merge these posts
an errata to my comment done on 2020-07-28 01:05 about tmpfs session dir.
the tmpfs directory i used to install session files is «/run» not «/tmp». as /tmp is auto (or manual) deleted sometimes
memcached is great, is lightning fast, very versatile and useful, scalable, and is a must have for many projects
but if you only want speed to minimize session file blocking there is also a good alternative, tmpfs
maybe if you are in debian you already had session directory in tmp (mounted as tmpfs), but beware of daily cleaning process that can mess up your sessions
you can use this trick if you are in centos/other (like me) or even if you are in debian but want to get ride of /tmp cleaning task
i realized in my system /run is also mounted as tmpfs, so i shut php-fpm down, moved my php session dir to /tmp/, reconfigure php and start again. (you can adapt it to your situation)
the only drawback is tmpfs is VOLATILE, just like memcached (data is lost on unmount/shutdown/power fail), to circumvent this risk i wrote another service that restores/backup php session dir before/after php starts/stops. (UNTESTED!)
vim /etc/systemd/system/php-session-backup.service
——
# basic persistence for tmpfs php sessions
[Unit]
Description=PHP tmpfs sessions backup/restore on shutdown/boot
Before=php-fpm.service
[Install]
WantedBy=multi-user.target
——
systemctl enable php-session-backup
you can also complement this with a daily backup task in case of system crash so you will lose just one day
this is very rough though, you can better use inotify + rsync, could take some ideas from here
Оптимизация работы с базой данных с помощью Memcached
Установка и настройка расширения PHP Memcached
Что такое Memcached?
Memcached – это хранилище данных в памяти с открытым исходным кодом и возможностью масштабирования, используемое в качестве кэша или хранилища сессий и обеспечивающее время отклика на уровне долей миллисекунды.
Список поддерживаемых языков программирования: Python, Java, PHP, C/C#/C++, Perl, Go, Ruby, JavaScript, Node.js.
Список поддерживаемых протоколов: ASCII, Протокол передачи двоичных данных, TCP и UDP.
Как работает Memcached?
Memcached, в отличие от баз данных не нуждается в доступе к диску или твердотельному накопителю, а производит сохранение необходимых данных в оперативную память, тем самым исключает задержки, связанные с поиском этих данных и обеспечивает более быстрый доступ к ним.
Оптимизация работы с базой данных с помощью Memcached
Предположим, нам необходимо сохранять некоторые временные данные, сохранность которых для нас не критична. Объем данных небольшой, но при этом мы вынуждены использовать большое количество запросов. Memcached-server для данной задачи подойдет как нельзя лучше. Для сравнения попробуем записать и прочесть 10000 строк в memcache и mysql:
$start = microtime(true);
$memcache_obj = memcache_connect(‘unix:///home/u/ user /.memcached.sock’, 0);
for ($i=0;$i user ‘);
Замеряем время записи и чтения в секундах.
Memcached: 0.36154913902283 (sec)
MySQL: 20.56244802475 (sec)
Да, для mysql можно оптимизировать запрос, использовать иные движки для хранения и т.п., но все равно, Memcached-server, как сервис хранящий данные в оперативной памяти на основе хеш-таблицы будет выигрывать по скорости у реляционных баз данных всегда.
Memcached доступен на тарифах линейки » Реактивный » и » Power «.
Инструкция включения Memcached на различных CMS доступна по ссылке : https://help.sweb.ru/entry/860/
Топ-6 сервисов для проверки кроссбраузерности сайта
Что такое memcached и для чего он нужен
Memcached (читается мемкЭшид) — это система кэширования различных объектов в оперативной памяти. Позволят значительно снизить нагрузку на базу или файловую систему и ускорить работу сайта, за счет того, что работа с памятью быстрее чем с базой или файлами. Насколько я помню была разработана для LJ, а сейчас применяется практически на всех проектах с большим количеством пользователей. Запускается отдельным сервером.
Если вы собираетесь делать свой стартап, то советую обратить на эту технологию пристальное внимание. За счет кэширования можно значительно уменьшить кол-во запросов к базе данных.
Для PHP есть специальный PECL-модуль (то есть он не поставляется вместе с PHP, надо отдельно скачивать и компилировать). Думаю также есть готовые модули для Perl, Python (Django), Ruby(RoR) и других языков.
В API самого мемкеша есть только базовые функции: выбор сервера, коннект и дисконект, добавление, удаление, обновление и получение объекта, инкримент и дикримент. Для каждого объекта устанвливается время жизни, от 1 секунды до бесконечности. При переполнение памяти более старые объекты автоматически удаляются. Для PHP также есть уже готовые библиотеки для работы с мемкешем, которые дают дополнительную функциональность.
Базовый алгоритм работы с мемкешем следующий — обращается к мемкеш-серверу за объектом, если он есть то берем его. Если нет, то обращаемся к базе данных (или где там еще у вас могут хранится данные), формируем объект, выдаем его пользователю и добавляем в мемкеш, чтобы мы могли прочитать его при следующем обращение.
В мемкеше имеет смысл хранить только часто запрашиваемые данные. Если какой то объект запрашивается у вас раз в неделю, то скорее всего лучший использовать файловый кеш. Хотя это также зависит и от архитектуры проекта.
Сейчас на одном из своих проектов (сайт знакомств) я пробую использовать мемкеш для реализации показа статуса пользователя он- или оффлайн..
Memcached и PHP ликбез
Что такое Memcache и какое отношение он имеет к PHP?
Memcache разработан для кэширования данных, генерация которых требует большого количества ресурсов. Такого рода данные могут содержать что угодно, начиная с результатов запроса к базе данных и заканчивая тяжеловесным куском шаблона. Memcached не входит в базовый набор модулей, поставляемых с PHP, однако он доступен в репозитории pecl.
Установка и настройка
В качестве рассматриваемого дистрибутива я решил использовать Debian, потому как он наиболее часто используется при создании web-серверов. Модуль Memcached для PHP доступен в репозитории уже скомпилированным (php5-memcached), но я опишу процесс установки из исходного кода, так как не все репозитории настолько богаты, как дебиановский.
Устанавливаем сервер Memcached
#/etc/memcached.conf
#Memcached будет работать, как демон
-d
#Лог будет складывать туда
logfile / var / log / memcached.log
#Отведём 256 мегабайт ОЗУ под хранилище
-m 256
#Слушать будет этот порт
-p 11211
#В последствии желательно поменять
-u nobody
#Слушаем localhost
-l 127.0.0.1
Проверяем
Компилируем и устанавливаем модуль для PHP
apt-get install php5-dev libmemcache-dev
echo ‘extension=memcache.so’ >> / etc / php5 / apache2 / php.ini
/ etc / init.d / apache2 restart
Примеры использования
1. Базовые операции
В результате выполнения этого кода каждый раз будет выводиться время с точностью до секунд. Однако обновляться оно будет раз в 5 секунд, пока не очистится кэш. В данном примере проиллюстрированы самые простые операции, но в производительности мы скорее потеряем, чем выиграем. Ведь нам каждый раз придётся подключаться к серверу…
2. Повышаем производительность
2.1 С кэшированием
В данном примере приведена функция, которая создаёт изображение размером 800×600 и расставляет на нём 10 000 точек. Один раз, сгенерировав такое изображение, в дальнейшем мы лишь выводим его на экран, не генерируя заново.
2.2 Без кэширования
Тут всё гораздо проще и привычней: генерируем изображение каждый раз заново.
Результаты
Я протестировал оба скрипта на производительность. Одна и та же машина в первом случае выдала 460 ответов в секунду, а во втором лишь 10. Чего и следовало ожидать.
Ещё несколько полезных функций
addServer — в случае, если у вас в распоряжении несколько кэширующих серверов, вы можете создать некий кластер, добавляя сервера в пул. Следует обратить внимание на параметр weight. Он указывает на то, сколько памяти вам будет доступно на конкретном сервере.
delete — из названия понятно, что данный метод удаляет из кэша объект с заданным ключом.
replace — заменяет значение объекта с заданным ключом. Используйте в случае, если Вам понадобится изменить содержимое объекта, раньше чем истечёт время его жизни.
С моей точки зрения, применять кэширование стоит только на высоконагруженных ресурсах. Ведь каждый раз, подключаясь к серверу Memcached, вы тратите драгоценное время, что скорее всего не будет оправданным. Что касается больших проектов, лучше сразу написать больше строк кода, чем потом делать это в попыхах, с мыслью о том, что ваш сервис лежит. Также не стоит забывать о расходовании памяти! Учтите, что положив 300 мегабайт в кэш, вы отняли у себя 300 мегабайт ОЗУ.
В завершение хочу сказать, что данная статья не раскрывает все прелести технологии, однако я надеюсь, что она стимулирует Вас к самосовершенствованию. Спасибо за прочтение, многоуважаемый %username%!
UPD: Ещё один интересный момент. Memcached, есть PHP API к libmemcached. А Memcache, библиотека для php, не использующая libmemcached.
Настройка и использование Memcached
В статье мы расскажем, что такое Memcache, зачем он нужен и как он влияет на работу некоторых популярных CMS.
Мы решили исправить этот недостаток, используя технологию контейнеров Docker, нами был создан специальный сервис «memcache». Теперь каждый может установить свой личный memcached, в котором будут гарантированно только Ваши данные.
Подключить персональный memcached возможно в Панели управления, в разделе Сервисы.
Для многих систем управления сайтом (CMS) существуют механизмы работы с memcached. Далее мы рассмотрим настройку memcached для самых популярных CMS и проведем нагрузочное тестирование с целью узнать, как изменится производительность сайта.
Для тестирования производительности сайтов будем использовать утилиту siege.
Для каждой CMS будем проводить тестирование со временем 5 минут.
WordPress и memcache
Для установки плагина работы с memcache, нужно зайти в административную панель сайта (http://site.ru/wp-admin/), затем в выпадающем списке меню «Плагины», выбрать пункт «Добавить новый»:
На открывшейся странице в верхней части есть поиск по плагинам, нужно ввести в это поле название плагина WP-FFPC и нажать «Enter»:
Затем нажать «Установить»:
И активировать плагин:
Готово, плагин установлен, осталось его настроить, для этого нужно зайти в настройки плагина:
Установить тип расширения PHP Memcache (без d) можно для версий PHP 7.2 и ниже. Для версии 7.3 и выше Вы сможете выбрать только PHP Memcahed. Различия между этими двумя расширениями несущественны, оба расширения отвечают за подключение сайта к сервису Memcached.
Затем необходимо нажать «Сохранить настройки» (кнопка внизу страницы), в верхней части страницы должно появится сообщение о том, что настройки сохранены и плагин успешно работает с memcached:
Также стоит отметить, что в настройках плагина (вкладка «Backend settings») есть возможность указать логин/пароль для подключения к memcached:
указывать их не нужно, так как доступ к memcached возможен только с вашего аккаунта.
в конфигурационный файл CMS wp-config.php (находится в корневой директории сайта), о чем нам напоминает сам плагин:
Отредактировать wp-config.php можно как через консоль ssh, например через утилиту PuTTy, так и через Файловый менеджер, который встроен в Панель управления хостингом:
На этом настройку можно закончить, сайт будет использовать систему кеширования memcached.
Скорректировать настройки кеширования при необходимости можно в настройках плагина, например, время «жизни» кеша для определенных элементов сайта:
Ключ для кеширования:
На вкладке «Cache exceptions» можно настроить различные исключения для кеширования, такие как:
Результат с включенным memcached:
Как видно, кеширование уменьшило время ответа сервера в 4 раза.
Joomla и memcache
В CMS Joomla! система кеширования (memcached) уже присутствует, её нужно лишь включить. Для это необходимо зайти в панель управления сайтом (по умолчанию: http://site.ru/administrator/), затем перейти в раздел Сайт->Общие настройки:
Выбрать пункт «Система«:
В правой части страницы будет находиться раздел с настройками кеширования, параметры должны быть установлены следующим образом:
Нажать кнопку «Сохранить» в верхней части страницы.
Готово, сайт настроен для работы с memcached.
Проведем замер производительности, без использования memcached:
С использованием memcached:
Хоть разница показателей и незначительна, но с увеличением количества контента на сайте и его посещаемости эта разница будет увеличиваться.
Drupal и memcache
Первым делом нужно подключится к серверу по ssh, например через утилиту PuTTy, затем в консоли ssh-клиента перейти в корневую директорию сайта с drupal‘ом:
Полный путь до сайта можно посмотреть в Панели управления, в разделе Сайты:
и выполнить команду:
после чего появится сообщение:
Плагин установлен, осталось добавить несколько строк настроек в файл конфигурации CMS, по умолчанию этот файл (относительно корня сайта) находится по пути
./sites/default/settings.php
Для его редактирования из консоли можно воспользоваться одним из редакторов файлов, например vim или nano, также файл можно отредактировать из Панели управления, перейдя в раздел Файловый менеджер:
В начало файла следуют добавить следующие строки:
Установка плагина завершена, осталось его активировать, для это нужно зайти в административную панель сайта http://site.ru/admin/ перейти в раздел «Модули»:
в самом низу страницы отметить чекбоксы для активации плагина и нажать кнопку «Сохранить»:
Установка завершена, сайт использует кеширование memcache.
Проведем тест скорости загрузки страниц сайта с помощью siege:
Без использования memcached:
с использование memcached:
Видим прирост производительности на одну треть.
Bitrix и memcache
Для подключения кеширования memcache в CMS Bitrix необходимо отредактировать файл:
./bitrix/php_interface/dbconn.php (если версия ядра меньше 14.0)
./bitrix/.settings_extra.php (если версия ядра выше 14.0). Если файл ./bitrix/.settings_extra.php отсутствует, то его необходимо создать.
Версию ядра можно посмотреть в разделе администрирования сайта, по умолчанию это ссылка:
http://site.ru/bitrix/admin/index.php
Отредактировать необходимый файл можно, подключившись к серверу по ssh, используя утилиту PuTTy, или через Файловый менеджер, который встроен в Панель управления хостингом.
Если редактируется файл ./bitrix/php_interface/dbconn.php (версия ядра меньше 14.0), то следует добавить строки:
Если редактируется файл ./bitrix/.settings_extra.php (версия ядра выше 14.0), то следует добавить строки:
Для проверки, что сайт использует memcached, следует перейти в административную панель сайта->настройки->панель производительности->Битрикс:
Хранение кеша должно быть установлено в memcache:
Сравним производительность сайта.
Без использования memcached:
с использование memcached:
Видим, что сервер тратит меньше времени на генерацию страницы:
С увеличением контента и посетителей ресурса разница будет значительнее.
Насколько мы видим, все представленные CMS работают быстрее. При этом тестирование проводилось на CMS «из коробки» (установка производилась из Панели управления, раздел CMS), т.е. без контента, а это означает, что на рабочих и заполненных сайтах увеличение скорости работы будет видно более явно.
Webasyst и memcache
Для использования memcached с Webasyst требуется создать в каталоге сайта файл wa-config/cache.php с следующим содержимым:
Убедиться, что кэширование работает, можно, создав в корне сайта файл с таким кодом:
При обращении к нему будут выведены все ключи данных, хранящихся в Memcached.