用缓存文件快速缓解数据库压力方案
在跟TX一个项目由于广告效果做的不错,用户暴增,几天时间某一张表达到5KW多条数据,后期还会暴增,不得把这张表重新优化,提高体验效果。由于数据大,迁移起来比较繁锁,同时考虑了项目周期性比较短等原因,临时采用把表生成缓存文件来读取,把这张表数据分成100张文据来代替读取数据库文件,然后后台定时抓取这张表数据生成缓存:
优点:读取速度快,实现简单,适用于广告型项目
缺点: 数据实时性不强,不适合周期长的项目
下面是实现代码部分:
PHP Code复制内容到剪贴板
- define('ROOT_PATH', realpath(dirname(__FILE__) . '/../') . '/');
- define('CACHE_PATH', ROOT_PATH.'cache/');
- $db = new TMService();
- //步长为1,循环
- foreach (range(0, 99, 1) as $number)
- {
- $fileName = "fileMessage".$number.".xml";
- $allFile = $db->query("select `FQQ`,`FUser`,`FState`,`FDealTime`,`FScore`,`FTime`,`FVoteCount`,`FDesc`,`FAudioUrl`,`FMemo`,`FType`,`FFileId` from Tbl_File where MOD(FFileId,100) = $number");
- $newArr = array();
- foreach($allFile as $key=>$item){
- $arr = array("0"=>$item);
- $newArr[$item['FFileId']] = $arr;
- }
- $data = serialize($newArr);
- $fo = @fopen(CACHE_PATH."filecache/".$fileName,'w');
- @fwrite($fo,$data);
- @fclose($fo);
- }
童鞋们有好的方案可以一起讨论一下。。
本文链接地址:
发布者:9streets于 2011-12-21 发表
| 我要评论(0) | 阅读次数(224)





