帝国cms400万文章首页高效率调用代码
时间:2023年09月17日
/来源:网络
/编辑:佚名
由于我服务器配置比较差,所以利用sql的rand()来随机肯定不行,太慢了,所以我转换思路,先建张表,字段分两个,一个是文章id一个栏目id,再通过这个表来进行区域性随机,这样就可以把随机高效率实现了,但是这样有个问题,用sql不靠谱,所以我写了一个PHP代码,经过测试,首页能在两秒内加载出来,但是老是随机不好,所以我又用了我的缓存插件来对页面进行固定….这都是后事了
<?php
$file_cache = "./news.json";
//缓存整个news表的数据
if(!file_exists($file_cache) || time()-filemtime($file_cache)>86400){
//查询分类
$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);
//根据数据表获取id
foreach($file_arrs as $k=>$v){
//增加变量
for ($rani=1; $rani<=30; $rani++){
$rand_id.= $v[mt_rand(0,count($v)-1)].",";
}
$rand_id = rtrim($rand_id,",");
$rand_data[] = $rand_id;
$rand_id = "";
$rani=1;
}
?>
写了两天,想来想去,最后测试了很久,才写成这样,如果服务器配置还是太小了,可以尝试将缓存文件给切分来调用,当然,这就需要你们再次而开了。
代码使用,先在首页模板最上面把PHP代码放上去,接下来就可以直接万能标签调用了
[ecmsinfo]1,20,32,1,0,13,0,"id in ($rand_data[0])"[/ecmsinfo]
[ecmsinfo]2,20,32,1,0,13,0,"id in ($rand_data[1])"[/ecmsinfo]
[ecmsinfo]3,20,32,1,0,13,0,"id in ($rand_data[2])"[/ecmsinfo]
比如这样调用,不懂PHP的,就先了解一下PHP语法先。可以找我改进代码哦!
<?php
$file_cache = "./news.json";
//缓存整个news表的数据
if(!file_exists($file_cache) || time()-filemtime($file_cache)>86400){
//查询分类
$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);
//根据数据表获取id
foreach($file_arrs as $k=>$v){
//增加变量
for ($rani=1; $rani<=30; $rani++){
$rand_id.= $v[mt_rand(0,count($v)-1)].",";
}
$rand_id = rtrim($rand_id,",");
$rand_data[] = $rand_id;
$rand_id = "";
$rani=1;
}
?>
写了两天,想来想去,最后测试了很久,才写成这样,如果服务器配置还是太小了,可以尝试将缓存文件给切分来调用,当然,这就需要你们再次而开了。
代码使用,先在首页模板最上面把PHP代码放上去,接下来就可以直接万能标签调用了
[ecmsinfo]1,20,32,1,0,13,0,"id in ($rand_data[0])"[/ecmsinfo]
[ecmsinfo]2,20,32,1,0,13,0,"id in ($rand_data[1])"[/ecmsinfo]
[ecmsinfo]3,20,32,1,0,13,0,"id in ($rand_data[2])"[/ecmsinfo]
比如这样调用,不懂PHP的,就先了解一下PHP语法先。可以找我改进代码哦!
新闻资讯 更多
- 【帝国cms教程】帝国CMS模板变量$GLOBALS[navclassid]用法分析04-03
- 【帝国cms教程】鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总04-03
- 【帝国cms教程】怎么快速找出帝国CMS数据库配置文件路径及迁移网站后修改技巧!04-03
- 【帝国cms教程】帝国CMS模板$GLOBALS[navclassid]用法详解04-03
- 【帝国cms教程】帝国cms 7.5版列表页分页样式修改笔记04-02
- 【帝国cms教程】解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法04-02
- 【帝国cms教程】帝国CMS只备份栏目和模板的方法04-02
- 【帝国cms教程】帝国CMS怎样删除清空数据库记录?04-02
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法