三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

树型论坛递归加速

时间:2022-10-18作者:未知来源:三度网教程人气:


树型论坛递归加速
一般的论坛都递归整个表
如果仅递归result,那么速度会加快不少,况且访问result是访问服务器内存.
我们一般通过下面的语句使游标移动
while($row=mysql_fetch_array($res))
其原理是当mysql_fetch_array($res)每执行一次则游标自动下移,直到结束为止
但是递归result时,我们只有一个result,当游标不定时,我们无法知道当前游标记录是否符合我们的要求
php提供了一个函数让用户自己指定游标位置
bool mysql_data_seek ( resource result_identifier, int row_number)
这个函数大家应该能看懂吧
下面我来讲讲我的思路.
为实现论坛分页,表结构设计如下:
表名:newestbbs(最新帖子 以最后回复时间排序)
结构:
id 只记录根帖的id
time 如果没有回帖,则为根帖提交时间,否则为最后回帖提交时间
表名:bbs
结构:
id 帖子本身的id
fathered 父帖id
rootid根帖id
time发帖时间
……….其它field
思路:
先由newestbbs得到最新帖列表(比如每页列表20条根帖 select id from newestbbs order by time limit 页数-1,20)
得到result后从整个bbs表里得到并显示所有result的根帖
while(bbs=mysql_fetch_array($result))
{
select * from bbs where rootid=bbs[‘id’] order by time //(由此得到第二个result,命名为res)
$root=mysql_fetch_array(res)
显示根帖
disdivplybbs($root[‘id’],$res) //递归显示此帖所有回帖
}
递归函数如下:
 function disdivplybbs($id,$mysqlres)
 {
 for($i=0;$i<mysql_num_rows($mysqlres);$i++)
 {
 mysql_data_seek($mysqlres,$i) //将游标移动到指定位置
 bbsreply=mysql_fetch_array($mysqlres) //得到此游标位置帖子的内容
 if(bbsreply[‘fatherid’]==$id)
 {
 //判断此帖的父帖id是否为给定的id
 //如果是则缩回显示
 disdivplybbs($bbsreply[‘id’],$mysqlres)//并且再递归搜索其有没有子帖
 //如果不是则判断下一条
 }
 } //循环所有result
 }


如有异议,请回帖或mailto: chensiping@163.net.本文无版权保护,欢迎随意修改转载

关键词:  树型论坛递归加速





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版