php mongodb实现分页操作

来源:转载


博主是大三的在校大学生,学习计算机的路上,有些自己的感悟,写下来互相讨论下,欢迎吐槽。

最近在用php写后台管理网站,改进功能时想到数据显示,实现的分页的功能显示,单纯用php+mongodb实现。代码如图:

<?phprequire_once 'dengluclass.php';$pagesize=8; //一页显示的数据个数$pagecount=0; //数据一共多少页$pagenow=1; //当前页数$test=new dengluclass();$pagecount=$test->getpagecount($pagesize); //通过count函数 获取数据显示多少页if(!empty($_GET['pagenow']) ) //初次调用当前页码为1 接下来通过href标签获取下页页数 { if($_GET['pagenow']<=$pagecount) { $pagenow=$_GET['pagenow']; } else{};}$cursor=$test->getlist($pagenow,$pagesize);while($cursor->hasnext()){ $value=$cursor->getnext(); echo '<tr align=center class=d>'; echo '<td>'.$value["kehuhao"].'</td>'; echo '<td>'.$value["xingming"].'</td>'; echo '</tr>'; }if($pagenow>1){ $prePage=$pagenow-1; echo "<a href='dengluxinxi.php?pagenow=$prePage'>上一页</a> "; //href标签上页 }if($pagenow<$pagecount){ $nextPage=$pagenow+1; echo "<a href='dengluxinxi.php?pagenow=$nextPage'>下一页</a> "; } echo "<a href='#'><<</a>"; echo "<a href='#'>>></a>"; echo "当前页{$pagenow}/总共页{$pagecount}"; echo "<br>"; ?> ?>

dengluclass.php
<?php require_once 'dengluclass.php'; error_reporting(E_ALL & ~E_NOTICE); class dengluclass{ public function getpagecount($pagecount){ $conn=new Mongo("mongodb://localhost:27017"); $collection=$conn->kehuguanli->dengluxinxi; $count=ceil($collection->count()/$pagecount); return $count; } public function getlist($pageNow, $pageSize) { $conn=new Mongo("mongodb://localhost:27017"); $collection=$conn->kehuguanli->dengluxinxi; $res=$collection->find()->skip(($pageNow-1)*$pageSize)->limit($pageSize); return $res; } }?>

简单来说,就是通过skip+limit实现分页,但是目前skip对于市面上的数据库,都是一笔不小的开销。当数据量很大时,skip就会变得很慢,网上的有的说用where+limit

整体思想就是先排序然后在limit,博主正在研究,静等更新。



分享给朋友:
您可能感兴趣的文章:
随机阅读: