通讀緩存回調(diào)在一個(gè)元素沒(méi)有從服務(wù)端檢索到的時(shí)候被調(diào)用。這個(gè)回調(diào)函數(shù)會(huì)接收到Memcached對(duì)象,請(qǐng)求的key以及 一個(gè)引用方式傳遞的值變量等三個(gè)參數(shù)。此回調(diào)函數(shù)負(fù)責(zé)通過(guò)返回true或false來(lái)決定在key沒(méi)有值時(shí)設(shè)置一個(gè)默認(rèn)值。 如果回調(diào)返回true,Memcached會(huì)存儲(chǔ)"傳出參數(shù)"(引用傳遞的值變量)存儲(chǔ)的值到memcached服務(wù)端并將其返回到原來(lái) 的調(diào)用函數(shù)中。僅僅Memcached::get()和Memcached::getByKey() 支持這類(lèi)回調(diào),因?yàn)镸emcache協(xié)議不支持在請(qǐng)求多個(gè)key時(shí)提供未檢索到key的信息。
示例 #1 通讀回調(diào)示例
<?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);
/* 從數(shù)據(jù)庫(kù)讀取個(gè)人信息 */
/* ... */
$value = $profile_info;
return true;
}
?>