您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 南平分类信息网,免费分类信息发布

PHP缓存技术实现_PHP教程

2024/12/1 2:13:57发布37次查看
发个php缓存实现,实现了apc和文件缓存,继承cache_abstract即可实现调用第三方的缓存工具。
参考shindig的缓存类和apc。
php代码
islocked($key)) {               return $this;           }                      $tries = 10;           $count = 0;           do {               usleep(200);               $count ++;           } while ($count islocked($key));  // 最多做十次睡眠等待解锁,超时则跳过并解锁              $this->islocked($key) && $this->unlock($key);                      return $this;       }   }         /**   * apc扩展缓存实现   *    *    * @category   mjie   * @package    cache   * @author     流水孟春   * @copyright  copyright (c) 2008-    * @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-    * @license    new bsd license   * @version    $id: cache/file.php 版本号 2010-04-18 16:46 cmpan $   */   class cache_file extends cache_abstract {       public $usesubdir     = false;              protected $_cachesdir = 'cache';              public function __construct() {           if (defined('data_dir')) {               $this->_setcachedir(data_dir . '/cache');           }       }              /**       * 获取缓存文件       *       * @param string $key       * @return string       */       protected function _getcachefile($key) {           $subdir = $this->usesubdir ? substr($key, 0, 2) . '/' : '';           return $this->_cachesdir . '/' . $subdir . $key . '.php';       }          /**       * 读取缓存变量       * 为防止信息泄露,缓存文件格式为php文件,并以开头       *        * @param string $key 缓存下标       * @return mixed       */       public function fetch($key) {           $cachefile = self::_getcachefile($key);           if (file_exists($cachefile) && is_readable($cachefile)) {               // include 方式               //return include $cachefile;               // 系列化方式                  return unserialize(@file_get_contents($cachefile, false, null, 13));           }              return false;       }          /**       * 缓存变量       * 为防止信息泄露,缓存文件格式为php文件,并以开头       *       * @param string $key 缓存变量下标       * @param string $value 缓存变量的值       * @return bool       */       public function store($key, $value) {           $cachefile = self::_getcachefile($key);           $cachedir  = dirname($cachefile);              if(!is_dir($cachedir)) {               if(!@mkdir($cachedir, 0755, true)) {                   throw new cacheexception(could not make cache directory);               }           }       // 用include方式           //return @file_put_contents($cachefile, 'http://www.bkjia.com/phpjc/735086.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/735086.htmltecharticle发个php缓存实现,实现了apc和文件缓存,继承cache_abstract即可实现调用第三方的缓存工具。 参考shindig的缓存类和apc。 php代码 ?php classcachee...
南平分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录