php mongodb实现分页操作

来源:互联网 发布:淘宝防伪码刮开退货 编辑:程序博客网 时间:2024/05/21 09:23


最近在用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
<?phprequire_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,博主正在研究,静等更新。

0 0
原创粉丝点击