Недокументированные возможности модулья Memcached (для PHP)

Читая на досуге исходники модуля Memcached для ПХП, наткнулся на неожиданное: оказывается этот модуль поддерживает соединение по протоколу UDP, причём документация молчит об этом.

Делается это вот так:

$udp = new Memcached();
$udp->setOption(Memcached::OPT_USE_UDP, true);
$udp->addServer($host, $port);

В частности, это позволит нам перейти на multi-UDP схему, если добавить разные порты как несколько серверов. Надо пробовать.

Другая вещь, которая никак не раскрывается документацией — пользовательские флаги (UDF — user defined flag). К каждому значению можно прикрепить один или несколько флагов, которые при получении значения будут складываться в заданную переменную:

const FLAG = 1;
const ANOTHER_FLAG = 2;

$m->set($key, 'value', 0, FLAG | ANOTHER_FLAG); // установили флаг
$m->get($key, null, null, $flags); // флаги будут лежать в переменной $flags

У каждой функции установки и получения значений (а их несколько, этих функций) в конце есть необязательный параметр для работы с флагами. Так что во всех вариантах использования значения можно как-то пометить, а потом эти пометки получить.

Позднее дополнение: похоже memcached больше не нуждается в multiport UDP patch, он и без него теперь с UDP работает нормально.

4 комментария

Велодорога домой

Бо́льшая часть моих велопрогулок — это примерно 15 километров совокупной дороги с работы и на неё. Езжу почти каждый день, если нет дождя, а они пока ещё не так уж и часты. Сегодня случился своеобразный рекорд — моя средняя скорость была 20 км/ч. Учитывая пешеходов, светофоры и пересечённый характер местности, совсем немало.

Велодорога домой (125.47КиБ)

3 комментария

Мокрая вода, твёрдый алмаз, быстрый фотон

Ребята, ну нет никакого «нижнего подчёркивания». Подчёркивание всегда внизу, под чем-то. Это ↘_↙ просто подчёркивание. Оно по определению нижнее, не бывает ни среднего, ни верхнего. Уточнение, что оно внизу лишнее.

20 комментариев