我正在运行memcached,而我的应用程序正在使用php libmemcached。
代码本身是一个简单的检查密钥,如果没有从mysql数据库中获取新的' x'到期时间。
我有一个从mysql中提取的数据数组,它通过另一个方法作为数组返回 - 它存储在memcached下的密钥' menudata_array'中。一切都很好,直到我注意到有时menudata从缓存方法返回null或空???
我唯一的信息是,当menudata返回空| null时,错误的周期等于120秒的到期超时?之后,将返回下一个数据请求。
我确定我在这里误解了一些东西!
代码如下:
function getMenuData()
{
$menudata_array = array(); //init an empty array
$memcache = getMemcache(); //method returns an instance of memcache (global) or false is failure
if($memcache)
{
//get from memcache
$menudata_array = $memcache->get('menudata_array');
//make sure something was returned
if($menudata_array === false)
{
$menudata_array = generate_menu_array(); // get from mysql db
$expire_seconds = 120;
$refresh = $memcache->add('menudata_array', $menudata_array, false, $expire_seconds);
if($refresh === false)
{
//key already exists so replace instead ...
$memcache->replace('menudata_array', $menudata_array, false, $expire_seconds);
}
}
}
else
{
//memcache not available|down... get from mysql db instead
$menudata_array = generate_menu_array();
}
//i added this line to track when this problem was happening ...
if(!$menudata_array || count($menudata_array)<=0)
{
logError();
}
return $menudata_array;
}
任何帮助/指示赞赏!