魔趣吧官方商城
广告联系
点击投放广告
完全免费的字体下载网站
魔趣吧站长

修罗高性能获取随机帖子探讨

[复制链接]
查看: 38|回复: 0
发表于 2020-5-9 16:25:48 | 显示全部楼层 |阅读模式
自己写的高性能获取随机帖子代码,分享给大家,不足之处请高手指点!为什么不直接用MySQL语句,据我测试发现兼容性不好,不知道是否我MySQL配置问题。如果您有更好的方法请多指!
. ~8 R2 L6 C' {1 k代码如下:
  1. function get_rand_thread($num = 20, $cond = array()){
  2.     global $db,$forumlist_show;
  3.     $tablepre = $db->tablepre;
  4.     $fids = arrlist_values($forumlist_show, 'fid');
  5.     $cond['fid'] = $fids;
  6.     $condsql = db_cond_to_sqladd($cond);
  7.     $maxmincount = db_sql_find_one("SELECT MAX(tid), MIN(tid), COUNT(*) FROM {$tablepre}thread {$condsql}");
  8.     list($max, $min, $count) = array_values($maxmincount);
  9.     if($count <= $num){
  10.         //符合条件的数据比指定的数据还少,直接全部读取吧,打散一下
  11.         $sql = "SELECT * FROM {$tablepre}thread {$condsql}";
  12.         $threads = db_sql_find($sql);
  13.         shuffle($threads);
  14.     } else {
  15.         //随机读取帖子,万一存在不符合条件的帖子,数量就少于$num个了,那继续读取,直到数量足够为止
  16.         $threads = array();
  17.         do {
  18.             $rndtids = array();
  19.             //生成随机tid,防止重复
  20.             for($i=$num;$i>0;$i--){
  21.                 do {
  22.                     $rand = rand($min, $max);
  23.                 } while(in_array($rand, $rndtids));
  24.                 $rndtids[] = $rand;
  25.             }
  26.             $cond['tid'] = $rndtids;
  27.             $condsql = db_cond_to_sqladd($cond);
  28.             $sql = "SELECT * FROM {$tablepre}thread {$condsql}";
  29.             $rndthreads = db_sql_find($sql);
  30.             $threads += $rndthreads;
  31.         } while(count($threads)<$num);
  32.     }
  33.     //数据格式化一下
  34.     if($threads) foreach ($threads as &$thread) thread_format($thread);
  35.     return $threads;
  36. }
复制代码
% Q% ~. \$ s0 i' y(www.moqu8 .com)

魔趣吧版权声明1,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2,本文内容仅代表作者本人观点,不代表本网站立场,作者文责自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3,本文内容,包括但不限于源码、文字、图片等,仅供参考使用,本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容
4,如您认为本文内容侵犯了您的权益,请与我们联系!我们将在5个工作日内做出处理!本站保留全部修改、解释、更新本声明的权利魔趣吧

魔趣吧,全网领先的建站资源下载基地!Discuz模板、Discuz插件、素材、特效,源码,建站,就上魔趣吧!!
魔趣吧唯一官方网站:https://www.moqu8.com,唯一官方客服QQ:1218894030,请谨防假冒网站和骗子冒充本站!
回复

使用道具 举报/反馈

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表
魔趣吧在线客服
关闭
欢迎来到魔趣吧
如果你有建站技术问题、仿站需求、模板插件修改需求,请联系我们的技术支持!高效率,低价格的帮你搞定!
请认准魔趣吧唯一官网:www.moqu8.com,谨防假冒网站!
建站技术支持(收费)
资源互换/合作
魔趣吧在线客服
普惠站长,魔趣吧VIP限时大降价X

普惠站长,魔趣吧VIP限时大降价

普惠站长,助力站长!魔趣吧VIP限时大降价,限时活动,不容错过!...

立即抢福利!
魔趣吧
做感动人心的好资源站

关于魔趣吧|魔趣建站

魔趣吧,志在打造全国最大的建站资源共享平台。 本站提供海量免费的建站资源,包括WordPress模板、Discuz精仿模板、PHPWind模板、phpcms模板、Discuz精仿插件、帝国cms模板、织梦模板等上万精品模板!同时,提供各种建站素材、JS特效、整站程序源码!
服务中文站长,传播分享精神!建站,就来魔趣吧!!
2015-2020  支持:魔趣吧 ( 豫ICP备15026783号-4 )  
HTTPS安全认证
|网站地图 已运行天