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; } ?> ]]>