Callback-функции
Callback-функции для результирующего набора
Результирующие callable-объекты вызываются
методами Memcached::getDelayed
и Memcached::getDelayedBykey для каждого
элемента результирующего набора. Callback-функции передаётся
объект Memcached и массив с информацией об элементе. Callback-функция
не должна ничего возвращать.
Пример сallback-функции для результирующего набора
addServer('localhost', 11211);
$items = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
$m->setMulti($items);
$m->getDelayed(array('key1', 'key3'), true, 'result_cb');
function result_cb($memc, $item)
{
var_dump($item);
}
?>
]]>
&example.outputs.similar;
string(4) "key1"
["value"]=>
string(6) "value1"
["cas"]=>
float(49)
}
array(3) {
["key"]=>
string(4) "key3"
["value"]=>
string(6) "value3"
["cas"]=>
float(50)
}
]]>
Callback-функции кеша со сквозным чтением
Callback-функции кеша со сквозным чтением вызываются, когда элемент невозможно получить с сервера.
В callback-функцию передаётся объект Memcached, запрошенный ключ
и переменная значения по ссылке. Callback-функция отвечает за установку значения и возврат значения
&true; или &false;. Если callback-функция вернула &true;, Memcached сохранит заполненное значение
на сервере и вернёт его оригинальной функции. Только методы Memcached::get
и Memcached::getByKey поддерживают эти callback-функции,
поскольку протокол memcache не даёт информации о том, какие ключи не были найдены в пакетном запросе.
Пример callback-функции сквозного чтения
addServer('localhost', 11211);
$profile_info = $m->get('user:'.$user_id, 'user_info_cb');
function user_info_cb($memc, $key, &$value)
{
$user_id = substr($key, 5);
/* Ищем требуемые данные в БД */
/* ... */
$value = $profile_info;
return true;
}
?>
]]>