公告:网站目录为广大站长提供收录网站服务,VIP会员每天提交网站30、文章20免审核,快审服务(50元/站),可自助充值发布

点击这里在线咨询客服 点击这里在线咨询客服
新站提交
  • 网站:1413
  • 待审:7
  • 小程序:18
  • 文章:18474
  • 会员:35

帝国cms全站高效率随机调用特点:
调用效率极高,79万数据随机调用测试,只需要500毫秒
调用可指定栏目调用,也可整个表调用.

安装简单,只需一个函数
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;
}
安装方式:
将代码放到e/class/userfun.php文件中
调用方式:
<?php
$id = ecms_rand(1,50);
?>
调用的文章id:
[e:loop={0,50,3,0,"id in ($id)"}]   
<?=$bqr['id']?>             
[/e:loop]
效率方面总结:
1、直接读文件相比数据库查询效率更胜一筹,而且文中还没算上连接和断开的时间。
2、一次读取的内容越大,直接读文件的优势会越明显(读文件时间都是小幅增长,这跟文件存储的连续性和簇大小等有关系),这个结果恰恰跟预料的相反,说明MYSQL对更大文件读取可能又附加了某些操作(两次时间增长了近30%),如果只是单纯的赋值转换应该是差异偏小才对。
3、写文件和INSERT几乎不用测试就可以推测出,数据库效率只会更差。
4、很小的配置文件如果不需要使用到数据库特性,更加适合放到独立文件里存取,无需单独创建数据表或记录,很大的文件比如图片、音乐等采用文件存储更为方便,只把路径或缩略图等索引信息放到数据库里更合理一些。
5、PHP上如果只是读文件,file_get_contents比fopen、fclose更有效率,不包括判断存在这个函数时间会少3秒左右。

分享到:

  admin

注册时间:

网站:0 个   小程序:3 个  文章:0 篇

  • 1413

    网站

  • 18

    小程序

  • 18474

    文章

  • 35

    会员

赶快注册账号,推广您的网站吧!
热门网站
最新入驻小程序

中医肿瘤李忠教授2024-04-03

拨打电话:010-53357212 李 忠 主

杜宝荣呼吸说2024-04-03

预约电话:15517158364 大家好,我是

呼吸科刘建博主任2024-04-03

刘建博教授 微信号|lys8733 联

中原健康官网2024-04-03

中原健康官网,主要是健康知识总

中原ZOY2024-04-03

医学知识分享

古医大讲堂2024-04-03

健康医疗、社会民生、体育健身