Or just set the value within the callback with your own custom expiration time and return false. I think it's cleaner.
Callback-функции кеша со сквозным чтением вызываются, когда элемент невозможно получить с сервера.
В callback-функцию передаётся объект Memcached, запрошенный ключ
и переменная значения по ссылке. Callback-функция отвечает за установку значения и возврат значения
true
или false
. Если callback-функция вернула true
, Memcached сохранит заполненное значение
на сервере и вернёт его оригинальной функции. Только методы Memcached::get()
и Memcached::getByKey() поддерживают эти callback-функции,
поскольку протокол memcache не даёт информации о том, какие ключи не были найдены в пакетном запросе.
Пример #1 Пример callback-функции сквозного чтения
<?php
$m = new Memcached();
$m->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;
}
?>
Or just set the value within the callback with your own custom expiration time and return false. I think it's cleaner.
This isn't specified anywhere, so I had a gander at the source...
The expiry on read-through cache set values is set to 0, or forever. This means if you want your key to implicitly expire, don't use the callback methods, instead check for boolean false as a return and manually set the value, at least for now.