Установка memcached php 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.

Источник

Читайте также:  Parsing java log files
Оцените статью