2015-09-11 11:05:59 3706次浏览 2条回答 0 悬赏 20 金钱

memcache的配置:

'cache'=>array(
    'class'=>'system.caching.CMemCache',
    'servers'=>array(
        array('host'=>'127.0.0.1', 'port'=>11211, 'weight'=>100),
    ),
),

调用代码:

$key = 'people';   
$value = json_encode(array('name'=>'balssl', 'age'=>'male'));   
$expire = 10;   
yii::app()->cache->set($key, $value);

问题:如果我参数中传入$expire,这个调用就失败了,

我看了一下framework\caching\CMemCache.php这个文件的时间是这么存的

protected function setValue($key,$value,$expire)
{
    if($expire>0)
        $expire+=time();
    else
        $expire=0;

    return $this->useMemcached ? $this->_cache->set($key,$value,$expire) :      $this->_cache->set($key,$value,0,$expire);
}

php手册里的是固定的时间30就代表30秒,这个时间是加了时间戳的。然后我的调用就出错了,不知道是哪的原因...

  • 回答于 2015-09-14 15:21 举报
    expire
    当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。
    

    http://php.net/manual/zh/memcache.set.php

    expire支持时间戳和不超过30天的过期时间(秒)

    至于你的调用出错,最好给个错误堆栈信息..

  • 回答于 2015-09-26 13:40 举报

    请问楼主最后解决了吗。我今天也遇到这个问题,不设expire的话可以get到数据,但设了expire就获取不到了

您需要登录后才可以回答。登录 | 立即注册
茶叶末
职场新人

茶叶末

注册时间:2015-09-08
最后登录:2015-11-20
在线时长:2小时38分
  • 粉丝1
  • 金钱35
  • 威望0
  • 积分55

热门问题