帝国CMS模板加rand()随机之类调用,数据超1万马上慢。【不怕蚂蚁一样的数据,就怕乌龟一样的模板】

如果必须要使用rand推荐使用下面比较高效的调用方法。

首先说下缺陷,文章如果删除了,会调用不到,并且只适用于一个数据表一个栏目的情况。。

<?php
$randnum=10;        //随机数量
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++)
{
        $randids.=$randdh.rand(1,100000);        //1为最小ID,100000为最大ID
        $randdh=',';
}
?>
[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,"id in ($randids)"}]
模板代码内容
[/e:loop]

举例:

[e:loop={1,10,0,0,"id in ($randids)"}]
模板代码内容
[/e:loop]

这段中的调用数量是固定死的,不方便多次调用,这里封装成函数方法。
以下代码放进/e/class/userfun.php文件里:

function rands($num){
    global $dbtbpre,$empire;
    $nubers=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news");
    $randnum=$num;
    $randids='';
    $randdh='';
    for($i=1;$i<=$randnum;$i++){
        $randids.=$randdh.rand(1,$nubers);
        $randdh=',';
    }
    $allstr.=$randids;
    return $allstr;
}

附上灵动标签的调用方法:

<?php
    //因为不懂编程,不知道怎么在灵动标签里调用函数,所以先赋值给一个变量,然后再调用。。。
    $randids = rands(10);
?>
[e:loop={1,10,0,0,"id in ($randids)"}]
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]

参考:
https://www.bbsxiaomi.com/cms/empirecms/456.html
https://www.99zyku.com/1237.html