加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php完成文件数据缓存实现代码

发布时间:2022-02-16 14:52:22 所属栏目:PHP教程 来源:互联网
导读:缓存技术是每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了. php实现文件数据缓存实现代码如下: ?php class cacheexception ex
  缓存技术是每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了.
 
 
  php实现文件数据缓存实现代码如下:
 
  <?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;   
      }   

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读