为了减轻服务器的负载,需要在程序中使用缓存的机制,MooPHP考虑到了这一点,在框架中加入了完善的缓存机制。
缓存的配置文件为MooPHP/MooCacheConfig.php,在使用时要根据自己的需要的来修改配置文件。 $_MooCacheConfig数组存放的是缓存的名称以及缓存之间的关系,例如
$_MooCacheConfig = array ( 'index' => array('settings', 'cacheKey'), 'category' => array('category'), 'cacheFile' => array('cacheKey') ); 说明:表示缓存index中有settings和cacheKey,缓存category中只有category,缓存cacheFile中只有cacheKey。
MooGetCache_cacheName为自定义的返回需要缓存的数据的函数。例如
function MooGetCache_cacheKey() { return $GLOBALS['_MooClass']['MooMySQL']->getAll("SELECT * FROM moophp_test WHERE id=id ORDER BY id DESC LIMIT 0, 5"); }
/** *获取Block数据 * * @param char $param: 参数字符串 * @return void */ function getBlock($param){ }
该方法可以根据参数param判断要获取的block的类型以及是否需要更新缓存,并将block数据存入全局变量$_MooBlock[]中。
/** *根据获取cachekey获取block数据 * * @param char $cachekey: 要获取的block的cachekey * @return array $cache:以数组的形式返回缓存的数据 */ function getBlockCache($param){ }
该方法可以根据cachekey获取block数据,并以数组的形式返回缓存的数据
/** *解析方法getBlock需要的参数 * * @param char $param: 要解析的参数字符串 * @return array $paramarr:以数组的形式返回解析后的参数 */ parseParameter($param) { }
该方法可以为方法getBlock解析需要的参数,并以数组的形式的返回。
/** *将要缓存的数据序列化之后写入缓存文件 * * @param char $cacheKey: 缓存的key * @param char $cacheArray: 要缓存的数据 * @return void */ setBlockCache ($cacheKey, $cacheArray) { }
该方法可以为将要缓存的数据序列化之后写入到缓存文件。
/** *将一个数组转为字符串的形式 * * @param array $array: 要输出的数组 * @param int $level:要输出的数组的级数 * @return char $evaluate:转换后的字符串 */ function arrayEval($array, $level){ }
该方法可以将一个数组转换成字符串的形式,已方便写入缓存文件。
/** *通过缓存文件更新缓存 * * @param char $cacheFile: 要更新的缓存文件的名称 * @return void */ function setCache($array, $level){ }
该方法可以根据缓存文件的名称来更新缓存。
/** *通过缓存key更新缓存 * * @param char $cacheKey: 要更新的缓存key的名称 * @return void */ function setCacheByKey($cacheKey){ }
该方法可以根据缓存key的名称来更新缓存。因为一个缓存可能存在于多个缓存文件中,这时候你如果想要更新一个缓存的话,就可以用缓存key来更新所有的缓存文件。
/** *将缓存数据写入缓存文件中 * * @param char $cacheFile: 缓存文件的地址 * @param char $cacheContent:缓存的数据 * @return void */ Function writeCache($cacheFile, $cacheContent) { }
该方法可以将需要缓存的数据写入缓存文件。
//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>';