关于帝国cms内容页随机调用当前栏目10篇文章的高效写法,大佬请进

查看 114|回复 11
作者:拉吉   
帝国cms默认     [e:loop={"select * from [!db.pre!]ecms_news where classid='$GLOBALS[navclassid]' order by rand() desc limit 10",12,24,0}]
大数据生成肯定会卡爆,求高效写法

高效, 帝国

安心frDJ4   
自定义页面生成 然后引入 定时刷新就可以了
沉默石头404   
之前百度到的。也在用
[ol]
  • [e:loop={4,10,0,0,"id in ($randids)"}]
  • [url=]">[/url]  
  • [/e:loop][/ol]复制代码
  • 拉吉
    OP
      
    沉默石头404 发表于 2023-12-1 21:29
    之前百度到的。也在用


    小千   
    order by rand()
    mysql的rand很浪费性能
    拉吉
    OP
      
    小千 发表于 2023-12-1 22:06
    order by rand()
    mysql的rand很浪费性能

    生成静态
    美文苑文学网   
    拉吉 发表于 2023-12-1 22:12
    生成静态

    此代码在id不连续的时候就会出现调用的数据不太准确了哦!难道生成静态就不占用资源吗!这是什么逻辑!你生成的时候不是也要把标签替换成PHP去执行生成吗?只是占用资源就post的时候
    拉吉
    OP
      
    美文苑文学网 发表于 2023-12-1 22:18
    此代码在id不连续的时候就会出现调用的数据不太准确了哦!难道生成静态就不占用资源吗!这是什么逻辑!你生成的时候不是也要把标签替换成PHP去执行生成吗?只是占用资源就post的时候

    那这么写好呢

    明月2022   
    任何随机都很慢,这是肯定的,我织梦随机调用20条,然后生成全部静态要2,3天才能生成完成,但去掉随机,全站,几十分钟就生成完成了
    美文苑文学网   
    拉吉 发表于 2023-12-1 22:23
    那这么写好呢
    [ol]
  • [e:loop={4,10,0,0,"id in ($randids)"}]
  • [url=]">[/url]
  • [/e:loop][/ol]复制代码
    首先这段代码有个bug,没有获取到最大的ID,其二就算获取了最大的ID。在ID不连续的情况会出现。随机的id可能不存在,调用少了!正确的应该是把$randids转成数组,用array_unique去重一下,再转成字符串。
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部