·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分购买✅卡密充值📒收藏夹🎖️众筹悬赏👽聊天室
返回列表 发布新帖

探讨分享帝国CMS比较高效的随机调用方法

144 1

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看不少人喜欢用ORDER BY RAND()随机调用,随机调用是最耗资源的一种调用方式,信息数在1万以上随机调用就开始影响速度。比like模糊匹配更占用资源!!!使用时建议慎之又慎。如果你能惹受乌龟爬的速度就当没说了!

如果确实要使用,可以参照帝国开发者王猛同志的逻辑思路:先用php随机出信息ID,然后SQL调用用id in (php随机的ID列表) 这样索引就能起到作用了!

那我们以文章表举例一下,调用举例:
  1. <?php $bid=$empire->fetch1("select id from {$dbtbpre}ecms_article order by id desc"); $randnum=10;$randids=''; $randdh=''; $minId=1; $maxId=$bid['id']; $idRange=range($minId,$maxId);shuffle($idRange);foreach($idRange as $randomId){ $randids.=$randdh.$randomId; $randdh=','; $randnum--; if($randnum<=0){ break; } } ?>[e:loop={'article',10,18,0,"id in ($randids)"}]  <a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br>  [/e:loop]  
复制代码
如果由于数据删除那就会存在ID不连续的情况,这样就会导致随机的id可能不存在,调用少了!那就只能加大马力给服务器增加压力查询验证下随机出来的ID是否存在咯!代码如下:
https://www.meiweny.cn/zazhi/zhongwangjiaocheng/179.html

上面两种代码经过在本站文章数据表拥有将近12万篇文章的情况下!不管是静态生成还是动态浏览速度就大大的提高了!毕竟有充分利用到索引id字段。当然也还有一种方法!敬请脑补!循环出来的ID转为数组在与文章表的数组进行去重后再合并数组在转为字符获得有用的随机ID!

不管哪种方法!帝国模板是支持PHP的,都可以借用memcached或者redis这样的内存把缓存时间设置长点!比如缓存一天的时间更能大大提高生成速度与动态速度!

总之:尽量不要用随机调用!这个确实是很浪费服务器资源!数据多会造成服务器资源耗尽!
我要说一句 收起回复
创宇盾启航版免费网站防御网站加速服务

评论1

拾光Lv.8 发表于 2023-12-2 16:30:16 | 查看全部
不明觉厉
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.142.55.101,GMT+8, 2024-9-20 00:17 , Processed in 0.370813 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表