PHP运行时内存和缓存机制,PHP的内存缓存机制(Memcached)

PHP的内存缓存机制(Memcached)

Memcached高性能的分布式的内存对象缓存系统,减轻对数据库频繁的访问

Memcached服务器端与客户端的安装与使用,请参看

文件缓存的用法

//-----------------------Code---------------//

functionfetch_array($query, $result_type = MYSQL_ASSOC) {

return is_resource($query) ? mysql_fetch_array($query, $result_type) : $query[0];

}

functionquery_memcache($sql, $type = '') {

global $mem,$memcachelife;

//设置过期时间,1小时内都是从内存中获取数据[如果存在]

//小于等于0,表示永不过期

$memcachelife = 60 * 60;

$key = md5(strtoupper($sql));

if(!($query = $mem->get($key))) {

echo "从数据库中获取
";

$query = $this->query($sql, $type);

while($item= $this->fetch_array($query)) {

$res[] = $item;

}

$query = $res;

$mem->set($key, $query , 0, $memcachelife);

}

else{

echo "从内存缓存中获取
";

$mem->set($key, $query , 0, $memcachelife);

}

return $query;

}

function clear_memcache($sql){

global $mem;

$ret = null;

$key = md5(strtoupper($sql));

$ret = $mem->delete($key);

return $ret;

}

//------------------Test-----------//

$db = new dbstuff;

$db->connect('localhost', 'root', 'discuz', 'ceshi', 1, true, 'gbk');

$mem = new Memcache();

$mem -> connect('127.0.0.1',8888);

//$mem -> addServer('127.0.0.1',8888);//添加服务

//----首先从内存获取,没有获取到才从数据库里读取----//

$query = $db->query_memcache("SELECT * FROM Test ORDER BY RAND()");

foreach($query as $row){

echo $row['data']." | ";

}

结果显示

从内存缓存中获取

hello5 | hello1 | hello2 | hello4 | hello3 |

//----以下是数据库直接读取-----//

echo "
";

$query = $db->query("SELECT * FROM Test ORDER BY RAND()");

while($row=$db->fetch_array($query)){

echo $row['data']." | ";

}

结果显示

hello2 | hello3 | hello | hello4 | hello5 |

?>

//清空缓存

$db->clear_memcache('SELECT * FROM Test ORDER BY RAND()');

//清空全部缓存内容,不是真的删除缓存的内容,只是使全部变量的缓存过时,内存中的内容被重写

//var_dump($mem->flush());

$memStats=$mem->getExtendedStats();//查看Memcache的详细运行情况

//$mem->getStats()

echo "

";

print_r($memStats);

$mem->close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值