php完成文件数据缓存实现代码
发布时间:2022-02-16 07:51:04 所属栏目:编程 来源:互联网
导读:缓存技术是每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了. php实现文件数据缓存实现代码如下: ?php class cacheexception exte
缓存技术是每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了. 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; } (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐