下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国cms怎样高效调用当前栏目推荐信息随机展示

365 2021-03-05 17:21:20

收藏
本文完全针对数据量至少在1万条以上的站点,如果站点数据不足1万条,不管是推荐、相关还是其他随机展示,完全可以用rand()做随机。

但数据量超过1万时,rand()函数非常消耗性能,轻则卡顿,重则卡死。数据量如果超过10万,绝不能在调用数据时用rand()。

那么,帝国cms怎样高效调用大数据站点当前栏目推荐信息随机展示呢?
 

1、取得全部推荐信息ID并随机选取要展示的ID

<?php
    $ecms_bq_sql=sys_ReturnEcmsLoopBq("select id from {$dbtbpre}ecms_$tbname where classid=$GLOBALS[navclassid] and isgood>0 order by id desc",20,24,0);
    while($bqr=$empire->fetch($ecms_bq_sql)){
           $bqsr=sys_ReturnEcmsLoopStext($bqr);
           $randids[] = $bqr[id];
    }
    shuffle($randids);
    $randids=array_slice($randids,0,10);
    $randids=implode(',',$randids);
?>
以上php源码主要目的在于获取当前栏目全部推荐信息,并随机取10条,与rand()相比免去了mysql循环查库并随机的过程,效率高之不少。

如果网站数据量很大,例如超过10万,则上方SQL命令需要进行一定程度的限制(会导致不是完全随机),否则同样会导致速度慢。
 

2、调用指定的随机ID做展示

[e:loop={"SELECT titleurl,title from [!db.pre!]ecms_news where id in ($randids) LIMIT 10",10,24,0}]
<li><a href="<?=$bqr[titleurl]?>" target="_blank" title="<?=$bqr[title]?>"><?=$bqr[title]?></a></li>
[/e:loop]

通过这样的方式,我们就可以实现高效调用推荐信息了,尤其是百万、千万级数据量的站点,千万不要用rand()。虽然简单,却损耗了超过300%的性能。

在前面的文章中,我们介绍了帝国CMS做百万、千万级别数据库的网站的相关信息,而一个千万级数据的站点要用到随机,是肯定不能用rand()的。

本文地址:https://xzo.com.cn/develop/empire/662.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
  • 隐藏的大佬 2021-05-11 04:28:11评论 #沙发#

    牛逼!网上那么多随机调用方案都长一个样,但根本就不合理,明眼人一看就懂。这个方案我虽然不是很理解原理,但确实很高效,而且数据也没有问题!感谢大佬无私分享!

关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
帝国CMS百度推送插件怎样将默认ID排序改为时间倒序?
帝国CMS百度推送插件怎样将默认ID排序改为时间倒序?

很多采集站点可能是这样操作的:采集好的资讯时间是采集时间,到了发布的时候会...

19 542
帝国cms怎样在新增信息时自动刷新自定义页面(sitemap.xml等)?
帝国cms怎样在新增信息时自动刷新自定义页面(sitemap.xml等)?

很多帝国CMS网站使用自定义页面制作sitemap或是其他一些重要的页面,如果每次...

3 356
帝国CMS文章页的seo标题在哪里?
帝国CMS文章页的seo标题在哪里?

很多朋友用惯了织梦CMS,转到帝国之后就非常困惑,因为织梦CMS的文章是有一个se...

1 326
帝国cms怎样展示会员总数与最新注册的会员名称?
帝国cms怎样展示会员总数与最新注册的会员名称?

如果网站会员数量较多,展示会员总数与最新注册会员名可以有效提升用户留存。...

3 312
帝国cms备份的数据存储在哪个文件夹?
帝国cms备份的数据存储在哪个文件夹?

有些时候,我们需要备份数据并取出来,此时从哪里去取呢?帝国cms备份的数据存储...

1 711
帝国cms后台取消单个账号不允许同时在线
帝国cms后台取消单个账号不允许同时在线

帝国cms默认是一个账号只能一个人登陆,其他人登陆时之前在线的用户将被挤下...

3 1149
帝国cms多站点跨库调用
帝国cms多站点跨库调用

一台服务器如果存在多个站点,则这些站点的数据可以互相调用。通过互相调用,我...

0 319
帝国cms编辑器ckeditor怎样获取最新内容?
帝国cms编辑器ckeditor怎样获取最新内容?

帝国cms编辑器使用的是ckeditor,想要获取最新内容需要点击两下,否则取到的不...

0 246
随机帝国CMS开发教程
帝国CMS怎样高效快速的做猜你喜欢的随机调用功能?
帝国CMS怎样高效快速的做猜你喜欢的随机调用功能?

猜你喜欢小功能如果直接用rand()调用随机ID是非常消耗性能的。小网站几百几...

7 361
帝国CMS首页、列表页实现点赞功能解析与demo
帝国CMS首页、列表页实现点赞功能解析与demo

帝国cms的点赞数是通过动态脚本载入的方式实时输出,而a标签上的makeRequest(...

1 310
帝国cms的fetch()和fetch1()有什么区别?
帝国cms的fetch()和fetch1()有什么区别?

fetch()和fetch1()是帝国CMS二次开发常用到的函数,虽然只差了一个1,但其函数...

7 510
帝国cms后台出现“您还未登录”错误怎么办
帝国cms后台出现“您还未登录”错误怎么办

帝国cms测试多次,绝对是正确的用户名和密码登录,但还是显示您还未登录的原因...

3 353
帝国cms文章列表、详情怎样实时显示点击数?
帝国cms文章列表、详情怎样实时显示点击数?

常有客户要求文章列表、详情能够实时显示点击数,但又不想将静态页面改为动态...

6 437
帝国CMS 8.0版本即将上线,届时不再支持GBK、BIG5编码
帝国CMS 8.0版本即将上线,届时不再支持GBK、BIG5编码

3月1日上午10点,帝国cms创始人王猛发布微博称8.0版本不再支持gbk、big5编码...

8 543
帝国CMS灵动标签调用留言板信息(附留言板字段解读)
帝国CMS灵动标签调用留言板信息(附留言板字段解读)

帝国cms调用留言板信息是可以调用到任意位置的,灵动标签即可办到。通过通配...

10 520
帝国cms怎样开发下载分成功能?
帝国cms怎样开发下载分成功能?

帝国CMS下载分成网上有很多插件,但操作起来都相对比较复杂,且免费插件存在安...

17 533
客服QQ:341553759
点击咨询 常见问题 >
官方交流群:90432500
点击加入