分页函数与缓存函数冲突

#1 redguan

只能二选择其一?

spPager();
选了分页,那么就不能对这个进行缓存了? spCache()

2010-04-10 09:00:03

#2 redguan

$datas = $db->spPager($p, 10)->findAll($conditions, $sort, $fields);dump($datas);
$this->datas = $db->spCache(3600)->$datas;

这样也不行

2010-04-10 09:03:18

#3 jake

的确,分页函数和缓存是会有冲突的,不能这样地简单叠加起来。

另外,缓存spCache其实可以说是对函数缓存,所以,以下的用法才是spCache最适当的用法:

1. 首先是将分页的操作封装起来,在model的子类中封装,这里可以延伸到把其他的数据操作封装起来,比如说一个首页上要同时显示每一个文章分类前六条新文章记录的情况。

class mydb extends spModel{   ...function getmypage($conditions, $page, $pageSize){   return $this->spPager($page, $pageSize)->findAll($conditions);}
function getalltext($limit = 6){  ...  return $data;>


2. 在控制器内就可以使用:

$this->result = spClass('mydb')->spCache(3600)->getmypage("", 1, 10);

$this->alltext = spClass('mydb')->spCache(3600)-> getalltext ();

来进行调用了,这是减少数据库操作而增加程序运行速度的一个简单有效的方法。

2010-04-10 09:21:50

#4 redguan

好的。我慢慢去理解消化。

2010-04-10 09:25:10

#5 →世事是实

按照你说的方法试了下,可以返回要查询的数据
$Model->spPager()->getPager();
却不返回数据了

2012-05-16 15:20:38

#6 →世事是实

已经找到方法了:
        function getmypage($conditions, $page, $pageSize){
                $data['data'] = $this->spPager($page, $pageSize)->findAll($conditions);
                $data['page'] = $this->spPager()->getPager();
                return $data;
        }

2012-05-16 15:27:44

#7 jake

→世事是实 发表于 2012-5-16 15:27
已经找到方法了:
        function getmypage($conditions, $page, $pageSize){
                $data['data'] = $this->spPage ...
我上面回帖就写上了,只是别人没看而已

2012-05-16 18:24:25