通读缓存回调在一个元素没有从服务端检索到的时候被调用。这个回调函数会接收到 Memcached 对象,请求的 key 以及 一个引用方式传递的值变量等三个参数。此回调函数负责通过返回 true 或 false 来决定在 key 没有值时设置一个默认值。 如果回调返回 true,Memcached 会存储"传出参数"(引用传递的值变量)存储的值到 memcached 服务端并将其返回到原来 的调用函数中。仅仅 Memcached::get() 和 Memcached::getByKey() 支持这类回调,因为 Memcache 协议不支持在请求多个 key 时提供未检索到 key 的信息。
示例 #1 通读回调示例
<?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;
}
?>