- Рука помощи
- 1. Установка и настройка Memcached
- 2. Установка расширения PHP для работы с Memcached
- 3. Пример использования
- Установка memcached php memcache
- User Contributed Notes 6 notes
- How to Install the PHP Memcached Extension
- Memcached
- Installing Memcached on PHP 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, and 8.2
- Installing Memcached on PHP 5.4, 5.5, and 5.6
- Verifying the Installation
- Uninstalling the Memcached Extension
- Memcache
Рука помощи
Memcached можно использовать в популярной CMS WordPress, подключив соответствующий плагин. Также данноt кеширование используется в работе таких «гигантов» сети, как Википедия (http://www.wikipedia.org/) и Живом журнале (https://www.livejournal.com/)
В чем же преимущество Memcached? Гораздо быстрее «достать» готовый результат работы скрипта или результат выполнения запроса к базе данных из оперативной памяти, чем выполнять данные вычисления. Особенно это касается тех случаев, когда одна и та же операция повторяется и ее результат практически не изменен (например формирование меню навигации для нескольких нескольких групп пользователей), когда у Вас на сайте 1000 посетителей в день, разница в скорости работы может быть не заметна, но когда количество посетителей превысит 10 000, кеширование ряда элементов сможет существенно снизить нагрузку на сервер.
1. Установка и настройка Memcached
- memcached – сам сервер
- libmemcached-dev – библиотека для подключения к серверу и работы с ним
Конфигурационный файл /etc/memcached.conf
Основные параметры, на которые я рекомендую обратить внимание
-d # Указывает, что Memcached работает в режиме демона
logfile /var/log/memcached.log #Ведем лог использования, полезно при отладке работы скриптов
-m 64 # Объем памяти в Мб, доступный для работы Memcached, устанавливайте это значение в зависимости от доступной оперативной памяти. При установке значения данного параметра следует учитывать сколько оперативной памяти используют другие сервисы (например Базы данных). Я предпочитаю устанавливать около 10-12% от объема оперативной памяти (для 4 Гб ОЗУ – 256 Мб)
-p 11211 # Номер порта, на котором работает Memcached
-u memcache # С под какого пользователя запускается сервис
-l 127.0.0.1 # Какие IP-адреса слушает, при доступе только с локального хоста – оставляйте без изменений, если доступ необходим с внешних устройств укажите IP-адрес сетевого интерфейса или закомментируйте
# -M # данный параметр отвечает за действия с кэшированными данными, когда закончится память. По умолчанию будут удалятся самые старые записи, если его включить, за состоянием памяти сервера нужно будет следить в ручном режиме и в случае когда вся доступная память будет занята – будете получать ошибку. Не рекомендую включать данный параметр.
После завершения изменения файла конфигурации сервис нужно перезапустить.
Проверить работоспособность Memcached можно, подключившись к нему через Telnet
$ telnet localhost 11211
Trying ::1.
Trying 127.0.0.1.
Connected to localhost.
Escape character is ‘^]’.
set foo 1 60 4
test
STORED
get foo
VALUE foo 1 4
test
END
^]
telnet> Connection closed.
set foo 1 60 4 – создаю запись foo со сроком жизни в 60 секунд (0 – без ограничения по времени, до удаления системой), длинной в 4 байта, следующей командой вводится значение, в примере: test
get foo – получаю значение записи с именем foo
На этом завершим знакомство с Memcached через командную строку
2. Установка расширения PHP для работы с Memcached
Данное расширение устанавливается при помощи утилиты pecl
Будьте внимательны: в репозитории pecl есть 2 расширения с очень похожими названиями: memcached (рабочий вариант) и memcache (не поддерживается с 2013 года)
На заданный вопрос о директории нажимаем Enter
Для корректной установки и работы необходимо, чтобы был установлен пакет libmemcached-dev
Включаем установленное расширение в PHP
echo «extension=memcached.so» >> /etc/php/7.0/mods-available/memcached.ini
phpenmod memcached
service apache2 restart
Открываем в браузере страницу с выводом php_info(); и ищем секцию «memcached», должно вывести приблизительно следующее:
3. Пример использования
Ниже привожу листинг скрипта, в котором показаны основы работы с некоторыми пояснениями
# Создаем объект для работы с Memcached
$memcached = new Memcached();
# Подключаемся к нашему серверу, можно добавить несколько серверов. В нашем примере добавляем один и работать будем с одним
$memcached->addServer(«localhost», 11211);
# Для добавления записи используется 3 процедуры add() set() и replace()
# add() — добавляет новую запись, в случае, если запись с таким ключом существует, вернет false
# set() — устанавливает значение записи по ключу, на ее работу не влияет, существует запись или нет
# replace() — заменят значение существующие записи, если запись не существует, вернет false
# Ниже примеры для добавления числа, строки, массива и объекта. Метод getResultMessage() возвращает сообщение с результатом выполнения
echo ($memcached->add(«its_integer», rand(0, 1000))) ? «Добавили число» : «Ошибка добавления числа «.$memcached->getResultMessage() ;
echo ‘‘;
echo ($memcached->set(«its_string», «test string. «)) ? «Добавили строку» : «Ошибка добавления строки «.$memcached->getResultMessage() ;
echo ‘‘;
echo ($memcached->replace(«its_array», array(«v1″=> rand(0, 1000), «v2″=>»test»))) ? «Добавили массив» : «Ошибка добаления массива «.$memcached->getResultMessage() ;
echo ‘‘;
echo ($memcached->set(«its_object», new stdClass())) ? «Добавили объект» : «Ошибка добавления объекта «.$memcached->getResultMessage();
echo ‘‘;
# для получения записи используется get() , для получения одного значения и getMulti() для получения массива значений по перечню ключей
var_dump($memcached->get(«its_integer» ));echo ‘‘;
var_dump($memcached->get(«its_string» ));echo ‘‘;
var_dump($memcached->getMulti(array(«its_array»,»its_object») ));echo ‘‘;
#Удаляем запись по ключу, если нужно полностью очистить все записи, используем flush()
$memcached->delete(«its_integer»);
# отключаемся от сервера
$memcached->quit ();
?>
Добавили число
Добавили строку
Добавили массив
Добавили объект
int(36)
string(14) «test string. «
array(2) < ["its_array"]=>array(2) < ["v1"]=>int(753) [«v2»]=> string(4) «test» > [«its_object»]=> object(stdClass)#2 (0) < >>
Для ознакомления со всеми функциями и их параметрами рекомендую ознакомиться с официальной справкой http://php.net/manual/ru/class.memcached.php
Если у Вас возникли вопросы, задавайте их в комментариях
Установка memcached php memcache
Этот модуль » PECL не поставляется вместе с PHP. Информация по установке этого модуля PECL может быть найдена в главе руководства Установка PECL модулей. Дополнительная информация, такая как новые версии, скачивание, исходные файлы, информация о разработчике и CHANGELOG, может быть найдена здесь: » https://pecl.php.net/package/memcache.
Замечание:
Существует возможность запретить использование memcache в качестве обработчика сессий (session handler). Команда ‘pecl install’ выдаёт об этом запрос (по умолчанию включено). Кроме того, при статической компиляции в PHP для этой цели возможно использование опции конфигурации —disable-memcache-session.
User Contributed Notes 6 notes
I hope this will help someone,
Context: I wanted to use memcache
like this:
but composer suggests me to install the extension
«ext-memcache»: «*»,
but that one didn’t want to work, so I installed
sudo apt install php7.4-memcache
sudo apt install php7.4-memcached
It is very important to note when reading the information supplied by others on this page that there are two *distinct* memcache PHP implementations for the service «memcached».
1) pecl-memcache
2) pecl-memcached
This page is for the first, pecl-memcache.
If you are looking for pecl-memcached information, visit here:
On Slackware, after copilling it, you should copy the file /module/memcache.so to /usr/lib/httpd/modules. Then, the instruction extension=memcache.so must be added into the file /etc/httpd/php.ini
Restart the httpd and it should work!
yum install php-pecl-memcache
#if apt-get, rpm, or yum doesn’t work
cd /usr/src/
wget http://pecl.php.net/get/memcache-2.2.4.tgz
tar -zxvf memcached-2.2.4.tgz
cd memcached-2.2.4
phpize && ./configure —enable-memcache && make
cp modules/memcache.so /usr/lib/php/modules/
# Note: packaged extension modules are now loaded via the .ini files
# found in the directory /etc/php.d
touch /etc/php.d/memcached.ini
echo ‘extension=memcache.so’ > /etc/php.d/memcached.ini
If you have error with libtool version after make — way to install:
phpize —clean && phpize
rm aclocal.m4
aclocal
autoconf
./configure
make
make install
[memcache-2.2.6, gentoo.x86-64]
How to Install the PHP Memcached Extension
In the examples shown, replace «X.Y» with your app’s PHP version (for example, «7.4» or «8.2»). To install a PECL extension for multiple PHP versions, repeat the PECL extension installation for each PHP version.
These PHP extensions provide client access to the Memcached server. They are not the Memcached server itself.
You also need to install the Memcached server to use Memcached with your PHP apps.
Memcached
Installing Memcached on PHP 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, and 8.2
To install this extension for PHP X.Y, SSH in to your server as root and run the following commands:
sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo apt-get -y install zlib1g-dev sudo apt-get -y install libmemcached-dev sudo peclX.Y-sp install memcached
When you are shown the following prompts, you will want to press Enter to select the default option for all of the prompts except for enable sasl. When shown the enable sasl prompt, input «no», then press Enter.
zlib directory [no] : use system fastlz [no] : enable igbinary serializer [no] : enable msgpack serializer [no] : enable json serializer [no] : enable server protocol [no] : enable sasl [yes] : no enable sessions [yes] :
Once installed, create a configuration file for the extension and restart PHP by running the following commands as root
sudo bash -c "echo extension=memcached.so > /etc/phpX.Y-sp/conf.d/memcached.ini" sudo service phpX.Y-fpm-sp restart
Installing Memcached on PHP 5.4, 5.5, and 5.6
To install this extension, SSH in to your server as root and run the following commands:
sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo apt-get -y install zlib1g-dev sudo apt-get -y install libmemcached-dev sudo pecl5.X-sp install memcached-2.2.0
When you are shown the prompt
libmemcached directory [no] :
type or paste the following text exactly as shown and press Enter.
That is, the entire line you’ll see on your screen will be as follows once you press Enter.
libmemcached directory [no] : no --disable-memcached-sasl
Once installed, create a configuration file for the extension and restart PHP by running the following commands as root
sudo bash -c "echo extension=memcached.so > /etc/php5.X-sp/conf.d/memcached.ini" sudo service php5.X-fpm-sp restart
Verifying the Installation
You can verify the memcached extension is installed correctly by running this command:
phpX.Y-sp -i | grep -i "memcached support"
You should see output like the following:
memcached support => enabled
Uninstalling the Memcached Extension
To uninstall this extension, as root run the commands:
sudo rm /etc/phpX.Y-sp/conf.d/memcached.ini sudo peclX.Y-sp uninstall memcached
Next, restart PHP-FPM with the command:
sudo service phpX.Y-fpm-sp restart
Memcache
Two different extensions are available that provide access to Memcached from within your PHP scripts. One is named memcache and the other is named memcached. This extension (the one named memcache with no d on the end) is no longer maintained.
To install this extension, SSH in to your server as root and run the following command:
sudo apt-get install gcc make autoconf libc-dev pkg-config sudo apt-get install zlib1g-dev sudo pecl5.X-sp install memcache
Once installed, create a configuration file for the extension and restart PHP.
sudo bash -c "echo extension=memcache.so > /etc/php5.X-sp/conf.d/memcache.ini" sudo service php5.X-fpm-sp restart
The memcache extension does not support PHP 7. For PHP 7 support, use the memcached extension shown above.