当前位置:七道奇文章资讯网站建设网站编程
日期:2010-11-21 16:30:00  来源:本站整理

php实现文件数据缓存实现[网站编程]

赞助商链接



  本文“php实现文件数据缓存实现[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

缓存技术是每次拜候页面的时刻,城市先检测呼应的缓存能否存在,假如不存在,就衔接数据库教程,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次拜候的时刻缓存文件就施展作用了,而不会再履行if块的数据查询语句了.当然,在实际利用中会有很多东西要考虑,比方,有效期的设置,缓存组的设置等等

<?php
class cacheexception extends exception {}
/**
* 缓存抽象类
*/
abstract class cache_abstract {
/**
* 读缓存变量
*
* @param string $key 缓存下标
* @return mixed
*/
abstract public function fetch($key);

/**
* 缓存变量
*
* @param string $key 缓存变量下标
* @param string $value 缓存变量的值
* @return bool
*/
abstract public function store($key, $value);

/**
* 删除缓存变量
*
* @param string $key 缓存下标
* @return cache_abstract
*/
abstract public function delete($key);

/**
* 清(删)除全部缓存
*
* @return cache_abstract
*/
abstract public function clear();

/**
* 锁定缓存变量
*
* @param string $key 缓存下标
* @return cache_abstract
*/
abstract public function lock($key);

/**
* 缓存变量解锁
*
* @param string $key 缓存下标
* @return cache_abstract
*/
abstract public function unlock($key);

/**
* 获得缓存变量能否被锁定
*
* @param string $key 缓存下标
* @return bool
*/
abstract public function islocked($key);

/**
* 确保不是锁定状况
* 最多做$tries次就寝等候解锁,超时则跳过并解锁
*
* @param string $key 缓存下标
*/
public function checklock($key) {
if (!$this->islocked($key)) {
return $this;
}

$tries = 10;
$count = 0;
do {
usleep(200);
$count ++;
} while ($count <= $tries && $this->islocked($key)); // 最多做十次就寝等候解锁,超时则跳过并解锁

$this->islocked($key) && $this->unlock($key);

return $this;
}
}


/**
* apc扩大缓存实现
*
*
* @category mjie
* @package cache
* @author 流水孟春
* @copyright copyright (c) 2008- <cmpan(at)qq.com>
* @license new bsd license
* @version $id: cache/apc.php 版本号 2010-04-18 23:02 cmpan $
*/
class cache_apc extends cache_abstract {

protected $_prefix = 'cache.mjie.net';

public function __construct() {
if (!function_exists('apc_cache_info')) {
throw new cacheexception('apc extension didn't installed');
}
}

/**
* 保存缓存变量
*
* @param string $key
* @param mixed $value
* @return bool
*/
public function store($key, $value) {
return apc_store($this->_storagekey($key), $value);
}

/**
* 读取缓存
*
* @param string $key
* @return mixed
*/
public function fetch($key) {
return apc_fetch($this->_storagekey($key));
}

/**
* 排除缓存
*
* @return cache_apc
*/
public function clear() {
apc_clear_cache();
return $this;
}

/**
* 删除缓存单元
*
* @return cache_apc
*/
public function delete($key) {
apc_delete($this->_storagekey($key));
return $this;
}

/**
* 缓存单元能否被锁定
*
* @param string $key
* @return bool
*/
public function islocked($key) {
if ((apc_fetch($this->_storagekey($key) . '.lock')) === false) {
return false;
}

return true;
}

/**
* 锁定缓存单元
*
* @param string $key
* @return cache_apc
*/
public function lock($key) {
apc_store($this->_storagekey($key) . '.lock', '', 5);
return $this;
}

/**
* 缓存单元解锁
*
* @param string $key
* @return cache_apc
*/
public function unlock($key) {
apc_delete($this->_storagekey($key) . '.lock');
return $this;
}

/**
* 完好缓存名
*
* @param string $key
* @return string
*/
private function _storagekey($key) {
return $this->_prefix . '_' . $key;
}
}

/**
* 文件缓存实现
*
*
* @category mjie
* @package cache
* @author 流水孟春
* @copyright copyright (c) 2008- <cmpan(at)qq.com>
* @license new bsd license
  以上是“php实现文件数据缓存实现[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>用PHP实现XML备份Mysql数据库</b>
  • php实现文件数据缓存实现
  • PHP实现尺度的IP Whois查询
  • php实现当前在线人数统计
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .