php代码Memcache缓存类

2 篇文章 0 订阅

1、php代码Memcache缓存类

<?php
class dcache {
	var $pre;
	var $obj;
	var $con;
	var $time;

    function __construct() {
		$this->obj = new Memcache;
		include DT_ROOT.'/file/config/memcache.inc.php';
		$num = count($MemServer);
		$key = $num == 1 ? 0 : abs(crc32($GLOBALS['DT_IP']))%$num;
		$this->con = $this->obj->connect($MemServer[$key]['host'], $MemServer[$key]['port'], 2);
		if(!$this->con) $this->time = $GLOBALS['DT_TIME'];
    }

    function dcache() {
		$this->__construct();
    }

	function get($key) {
        if($this->con) return $this->obj->get($this->pre.$key);
		is_md5($key) or $key = md5($this->pre.$key);
		$php = DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php';
		if(is_file($php)) {
			$str = file_get($php);
			$ttl = substr($str, 13, 10);
			if($ttl < $this->time) return '';
			return substr($str, 23, 1) == '@' ? substr($str, 24) : unserialize(substr($str, 23));
		} else {
			return '';
		}
    }

    function set($key, $val, $ttl = 600) {
        if($this->con) return $this->obj->set($this->pre.$key, $val, 0, $ttl);
		is_md5($key) or $key = md5($this->pre.$key);
		$ttl = $this->time + $ttl;
		$val = '<?php exit;?>'.$ttl.(is_array($val) ? serialize($val) : '@'.$val);
		return file_put(DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php', $val);
    }

    function rm($key) {
        if($this->con) return $this->obj->delete($this->pre.$key);
		is_md5($key) or $key = md5($this->pre.$key);
		return file_del(DT_CACHE.'/php/'.substr($key, 0, 2).'/'.$key.'.php');
    }

    function clear() {
        if($this->con) return $this->obj->flush();
		@rename(DT_CACHE.'/php/', DT_CACHE.'/'.timetodate($this->time, 'YmdHis').'.tmp/');
    }

	function expire() {
		return true;
	}
}
?>

2、/file/config/memcache.inc.php文件代码,Memcache服务器配置

<?php
/*
说明:Memcache服务器配置
示例:
$MemServer = array(
	array('host'=>'192.168.1.10', 'port'=>'11211'),
	array('host'=>'192.168.1.11', 'port'=>'11211'),
	array('host'=>'192.168.1.12', 'port'=>'11211'),
);
*/
$MemServer = array(
	array('host'=>'127.0.0.1', 'port'=>'11211'),
);
?>
  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

net1193379199

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值