这里会显示出您选择的修订版和当前版本之间的差别。
| — |
documents:cacheclass [2008/09/03 17:44] (当前版本) kimi 创建 |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== Moophp缓存类的使用 ====== | ||
| + | 为了减轻服务器的负载,需要在程序中使用缓存的机制,MooPHP考虑到了这一点,在框架中加入了完善的缓存机制。 | ||
| + | |||
| + | ===== 配置文件 ===== | ||
| + | |||
| + | 缓存的配置文件为MooPHP/MooCacheConfig.php,在使用时要根据自己的需要的来修改配置文件。 | ||
| + | $_MooCacheConfig数组存放的是缓存的名称以及缓存之间的关系,例如 | ||
| + | <code php> | ||
| + | $_MooCacheConfig = array | ||
| + | ( | ||
| + | 'index' => array('settings', 'cacheKey'), | ||
| + | 'category' => array('category'), | ||
| + | 'cacheFile' => array('cacheKey') | ||
| + | ); | ||
| + | 说明:表示缓存index中有settings和cacheKey,缓存category中只有category,缓存cacheFile中只有cacheKey。 | ||
| + | </code> | ||
| + | MooGetCache_cacheName为自定义的返回需要缓存的数据的函数。例如 | ||
| + | <code php> | ||
| + | function MooGetCache_cacheKey() { | ||
| + | return $GLOBALS['_MooClass']['MooMySQL']->getAll("SELECT * FROM moophp_test WHERE id=id ORDER BY id DESC LIMIT 0, 5"); | ||
| + | } | ||
| + | </code> | ||
| + | ===== 方法getBlock ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *获取Block数据 | ||
| + | * | ||
| + | * @param char $param: 参数字符串 | ||
| + | * @return void | ||
| + | */ | ||
| + | function getBlock($param){ | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以根据参数param判断要获取的block的类型以及是否需要更新缓存,并将block数据存入全局变量$_MooBlock[]中。 | ||
| + | ===== 方法getBlockCache ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *根据获取cachekey获取block数据 | ||
| + | * | ||
| + | * @param char $cachekey: 要获取的block的cachekey | ||
| + | * @return array $cache:以数组的形式返回缓存的数据 | ||
| + | */ | ||
| + | function getBlockCache($param){ | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以根据cachekey获取block数据,并以数组的形式返回缓存的数据 | ||
| + | ===== 方法parseParameter ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *解析方法getBlock需要的参数 | ||
| + | * | ||
| + | * @param char $param: 要解析的参数字符串 | ||
| + | * @return array $paramarr:以数组的形式返回解析后的参数 | ||
| + | */ | ||
| + | parseParameter($param) { | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以为方法getBlock解析需要的参数,并以数组的形式的返回。 | ||
| + | ===== 方法setBlockCache ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *将要缓存的数据序列化之后写入缓存文件 | ||
| + | * | ||
| + | * @param char $cacheKey: 缓存的key | ||
| + | * @param char $cacheArray: 要缓存的数据 | ||
| + | * @return void | ||
| + | */ | ||
| + | setBlockCache ($cacheKey, $cacheArray) { | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以为将要缓存的数据序列化之后写入到缓存文件。 | ||
| + | ===== 方法arrayEval ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *将一个数组转为字符串的形式 | ||
| + | * | ||
| + | * @param array $array: 要输出的数组 | ||
| + | * @param int $level:要输出的数组的级数 | ||
| + | * @return char $evaluate:转换后的字符串 | ||
| + | */ | ||
| + | function arrayEval($array, $level){ | ||
| + | } | ||
| + | |||
| + | </code> | ||
| + | 该方法可以将一个数组转换成字符串的形式,已方便写入缓存文件。 | ||
| + | ===== 方法setCache ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *通过缓存文件更新缓存 | ||
| + | * | ||
| + | * @param char $cacheFile: 要更新的缓存文件的名称 | ||
| + | * @return void | ||
| + | */ | ||
| + | function setCache($array, $level){ | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以根据缓存文件的名称来更新缓存。 | ||
| + | ===== 方法setCacheBykey ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *通过缓存key更新缓存 | ||
| + | * | ||
| + | * @param char $cacheKey: 要更新的缓存key的名称 | ||
| + | * @return void | ||
| + | */ | ||
| + | function setCacheByKey($cacheKey){ | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以根据缓存key的名称来更新缓存。因为一个缓存可能存在于多个缓存文件中,这时候你如果想要更新一个缓存的话,就可以用缓存key来更新所有的缓存文件。 | ||
| + | ===== 方法writeCache ===== | ||
| + | <code php> | ||
| + | /** | ||
| + | *将缓存数据写入缓存文件中 | ||
| + | * | ||
| + | * @param char $cacheFile: 缓存文件的地址 | ||
| + | * @param char $cacheContent:缓存的数据 | ||
| + | * @return void | ||
| + | */ | ||
| + | Function writeCache($cacheFile, $cacheContent) { | ||
| + | } | ||
| + | </code> | ||
| + | 该方法可以将需要缓存的数据写入缓存文件。 | ||
| + | ===== 综合使用方法样例 ===== | ||
| + | <code php> | ||
| + | //note 定义缓存目录,如果不定义缓存目录的话,将会使用默认路径,默认路径是与框架核心文件夹平级的Moo-data文件夹 | ||
| + | define('MOOPHP_DATA_DIR', dirname(__FILE__).'/Moo-data'); | ||
| + | |||
| + | //note 加载MooPHP框架 | ||
| + | require dirname(__FILE__).'/../../MooPHP/MooPHP.php'; | ||
| + | |||
| + | |||
| + | //note 通过缓存文件更新缓存 | ||
| + | $_MooClass['MooCache']->setCache('cacheFile'); | ||
| + | |||
| + | //note 通过缓存key更新缓存 | ||
| + | $_MooClass['MooCache']->setCacheByKey('cacheKey'); | ||
| + | |||
| + | //note 缓存需要加密的数据 | ||
| + | $_MooClass['MooCache']->getBlock("type=query/name=newbloglist/sql=SELECT * FROM moophp_blogs ORDER BY id DESC/cachetime=2000"); | ||
| + | |||
| + | //note 输出通过block缓存的数据 | ||
| + | foreach((array)$_MooBlock['newbloglist'] as $blog) { | ||
| + | print_r($blog); | ||
| + | } | ||
| + | //note 加载缓存 | ||
| + | include MooCacheFile('cacheFile'); | ||
| + | |||
| + | echo '<pre>'; | ||
| + | print_r($_MooCache); | ||
| + | echo '</pre>'; | ||
| + | |||
| + | </code> | ||
| + | |||
| + | |||