Современные решения ИТ задач и программной инженерии

Использование Memcache в PHP

05.07.2015 в разделах ОбучениеПрограммированиес тегами cachephp
Использование Memcache в PHP
Статья, скорее всего будет полезна тем, кто ни разу не использовал Memcache в PHP. Ничего нового вы не узнаете, если сталкивались с Memcache в целом или в других языках программирования. Итак приступим.

Memcache очень полезная и удобная штука. Не буду описать все его плюсы и минусы. Об этом можно почитать на других ресурсах. Давайте вспомним вкратце, что Memcache это примитивная "база данных". Хранится в оперативной памяти и имеет тип хранения "ключ: значение".

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

Скрипт №1

  $m = new Memcache;
  if($m->connect('127.0.0.1', 11211)) {
    $m->set('my_key_name', '123', false, 60);
    $m->close();
  }
?>

Скрипт №2

  $m = new Memcache;
  if($m->connect('127.0.0.1', 11211)) {
    echo $m->get('my_key_name');
    $m->close();
  }
?>

Ну ладно, раз уж начали писать установку и чтение, давайте напишем так же и удаление.

Скрипт №3

  $m = new Memcache;
  if($m->connect('127.0.0.1', 11211)) {
    $m->delete('my_key_name');
    $m->close();
  }
?>

Для начала посмотрим на первый скрипт, рассмотрим его полностью а остальные отличаются только одной строкой кода. Создаем новый объект Memcache и присваиваем его переменной $m. Дальше вызываем функцию connect и пытаемся подключиться к Memcache серверу. Если соединение установлено, функция вернет true, иначе false.

Так как Memcache сервер стоит на той же машине, на которой мы работаем, значит подключаемся к локальному хосту "127.0.0.1" или "localhost". 11211 - это стандартный порт сервера, его можно не указывать, он является не обязательным параметром, так же как и таймаут подключения.

После подключения нам доступны будут такие функции как set, get и delete. Это не все функции но оны основные, их достаточно для работы. Остальные можете посмотреть на сайте по PHP.

Функция set принимает 4 параметра: имя ключа (идентификатор), значение, флаг типа true/false (использовать сжатие записываемых данных) и количество секунд, сколько эта запись буде существовать. Кстати если установить количество секунд в ноль то запись никогда не удалиться но это не правда, это до первой перезагрузки сервера кеширования или сервера в целом.

Итак мы записали функцией set строку "123" с идентификатором "my_key_name" в оперативную память. Теперь давайте прочитаем это значение по ключу.

Для чтения, воспользуемся функцией get. Этой функции нужно передать имя ключа, по которому будет произведен поиск нашей записи и чтение значения. Если запустить сначала первый скрипт а потом второй, то мы увидим наше значение "123", которое было записано первым скриптом.

Удалить запись из Memcache можно функцией delete. Или же дождаться, когда выйдет время существования записи, при условии что вы указали не ноль. Функция так же как и get принимает имя ключа, по которому будет произведен поиск и удаление записи. Ну и в каждом скрипте присутствует функция close, которая просто отключается от Memcache сервера.

Как видите, нет ничего сложного. Особенно если вы работали с Memcache ранее на других языках программирования. Кстати, используя Memcache можно организовать мгновенный обмен данными между разными программами на разных языках программирования. Единственное что нужно упомянуть, что Memcache из коробки не поставляется с PHP и его нужно ставить как библиотеку к PHP отдельно.

Забыли мы за третий скрипт. Если запустить сначала первый скрипт, потом третий а потом только второй то мы ничего не увидим. Так как мы делаем запись значения, его удалении а потом только чтение. Ну это как бы просто для проверки и подтверждения.