QQ咨询不加好友发不了信息,咨询前先加好友! → QQ:820896380 ×

帝国cms全站高效率随机调用函数代码(毫秒级调用)

一,将代码放到e/class/userfun.php文件中

function ecms_rand($classid,$num){
global $empire,$dbtbpre;
$file_cache = ECMS_PATH."d/news.json"; //缓存文件
//缓存整个news表的数据
if(!file_exists($file_cache)){
//查询分类
$hm_class=$empire->query("select classid from {$dbtbpre}enewsclass"); 
while($hm_r=$empire->fetch($hm_class))
{
//查询分类下面的所有id
$hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}"); 
while($hm_nr=$empire->fetch($hm_news))
{
$news_data[$hm_r['classid']][] = $hm_nr[id];
}
}
file_put_contents($file_cache,json_encode($news_data));
}
//获取缓存数据文件
$file_arrs = json_decode(file_get_contents($file_cache),true);
if($classid=="0"){
$num = ceil($num/count($file_arrs));
foreach($file_arrs as $k=>$v)
{ 
if(count($v) <= $num){ continue;}
//根据数据表获取id,每个栏目随机分配文章id
$key_array = array_rand($file_arrs[$k],$num);
foreach($key_array as $v)
{
$rand_id.= $file_arrs[$k][$v].","; 
}
}
$rand_id = rtrim($rand_id,",");
}else{
if(count($file_arrs[$classid]) <= $num){
$key_array = array_rand($file_arrs[$classid],count($file_arrs[$classid]));
}else{
$key_array = array_rand($file_arrs[$classid],$num);
}
//根据数据表获取id,每个栏目随机分配文章id
$key_array = array_rand($file_arrs[$classid],$num);
foreach($key_array as $v)
{
$rand_id.= $file_arrs[$classid][$v].","; 
}
$rand_id = rtrim($rand_id,",");
}
return $rand_id;
}

二、模板调用方式:


<?php
$id = ecms_rand(1,50);
?>
调用的文章id:
[e:loop={0,50,3,0,"id in ($id)"}] 
<?=$bqr['id']?> 
[/e:loop]

给TA打赏
共{{data.count}}人
人已打赏
帝国CMS教程

帝国CMS8.0利用PHP判断首页显示友情链接,其他页面不显示方法

2025-10-6 19:38:44

运维

Linux系统如何解决内存过高和泄露问题

2024-4-30 13:48:10

个人中心
购物车
优惠劵
有新私信 私信列表
搜索