2024年PHP开发者大会日本站

贯穿式缓存回调

当无法从服务器检索项目时,将调用贯穿式缓存回调。回调函数将传递 Memcached 对象、请求的键和按引用传递的值变量。回调函数负责设置值并返回 true 或 false。如果回调函数返回 true,Memcached 将将填充的值存储在服务器上并将其返回给原始调用函数。只有 Memcached::get()Memcached::getByKey() 支持这些回调函数,因为 memcache 协议不提供关于在多键请求中未找到哪些键的信息。

示例 #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;
}
?>
添加注释

用户贡献的注释 2条注释

chadkouse
12年前
或者只需使用您自己的自定义过期时间在回调函数中设置值并返回false。我认为这样更简洁。
oorza2k5 at gmail dot com
15年前
这一点在任何地方都没有说明,所以我查看了一下源代码……

贯穿式缓存设置值的过期时间设置为0,或永久有效。这意味着如果您希望您的键隐式过期,请不要使用回调方法,而是检查布尔值false作为返回值并手动设置值,至少目前是这样。
To Top