分装memcached操作类以及使用方法

<?php

class MemLibrary {

    private static $config;
    private $_memcached;

    public function __construct()
    {
        $CI =& get_instance();
        if ($CI->config->load('memcached', TRUE, TRUE))
        {
            self::$config = $CI->config->config['memcached'];
        }

        if (class_exists('Memcached', FALSE))
        {
            $this->_memcached = new Memcached();
        }
        elseif (class_exists('Memcache', FALSE))
        {
            $this->_memcached = new Memcache();
        }
        else
        {
            log_message('error', 'Cache: Failed to create Memcache(d) object; extension not loaded?');
            return;
        }
        $this->_memcached->addServer(
                    self::$config['memcached']['default']['hostname'],
                    self::$config['memcached']['default']['port']
                );
    }


    public function setValue($id, $data, $ttl = 60, $raw = FALSE)
    {
        if ($raw !== TRUE)
        {
            $data = array($data, time(), $ttl);
        }
        return $this->_memcached->set($id, $data, $ttl);
    }

    public function getValue($id)
    {
        $stored = $this->_memcached->get($id);

        if (count($stored) !== 3)
        {
            return FALSE;
        }

        list($data, $time, $ttl) = $stored;

        return array(
            'expire'    => $time + $ttl,
            'mtime'     => $time,
            'data'      => $data
        );
    }

    public function deleteValue($id)
    {
        return $this->_memcached->delete($id);
    }

    public function is_supported()
    {
        return (extension_loaded('memcached') OR extension_loaded('memcache'));
    }
}

使用

$this->load->library('MemLib');//加载上面的类,根据框架自行调整
if($this->memlib->is_supported() === TRUE){
     $res = $this->memlib->setValue( $x_token, $x_token, 86400);
     log_message('error',"res=$res---".json_encode($this->memlib->getValue($x_token)));

 }

//取值

$this->load->library('MemLib');
if(!in_array($uri, $this->uri_arr) && $this->memlib->is_supported() === TRUE && ENVIRONMENT != 'local'){
          if(!isset($header['X-Token']) || (isset($header['X-Token']) && !$this->memlib->getValue($header['X-Token']))){
          $this->response(200000401,"", "登录失效");
      }
      $this->memlib->setValue( $header['X-Token'], $header['X-Token'], 86400);
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值