memcache在get方法上返回的间歇空数据

时间:2013-08-20 11:22:29

标签: php memcached

我正在运行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;

}

任何帮助/指示赞赏!

0 个答案:

没有答案