最新公告
  • 欢迎您光临站长源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 帝国高效率随机调用功能扩展

    正文概述 管理员   2024-04-11   127

    知识点总结
    1.PHP代码

    function ZQrand($classid , $num){
        global $dbtbpre,$empire;
        /* 检测json文件是否存在 */
        $file_arrs = glob(ECMS_PATH."d/json/*.json");
        $file_cache = $file_arrs[0];
        //缓存整个news表的数据
        if(!file_exists($file_cache) || time()-@filemtime($file_cache)>86400){
            //创建文件夹
            @mkdir(ECMS_PATH."d/json/",0777);
            //查询分类
            $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_nr[id];
                    $all_id[] = $hm_nr[id];
                }
                file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
                unset($news_data);
            }
            file_put_contents(ECMS_PATH . "d/json/" . allId . ".json",json_encode($all_id));
        }
        $num = (int) empty($num)?10:$num;
        $classid = (int)$classid;
       // 获取所有的文件
        $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid}"); 
        if(empty($hm_class[classid])){
            // 随机调用
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
        }else{
            //调用栏目
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
            if(empty($file_arrs)){
                $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
            }
        }
        if(empty($file_arrs)){
            return '';
        }else{
            for ($rani=1; $rani<=$num; $rani++){
                $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";    
            }
            $rand_id = rtrim($rand_id,",");
            $where = "id in ($rand_id)";
            return $where;
        }
    }

    2.js代码,主要用于关闭弹窗,定时的

    setTimeout(function(){
        w indo w.close();
        document.onload = w indo w.close();
    },1000);

    2022.8.19 代码改进:

    function ZQrand($classid , $num = 100){
        global $dbtbpre,$empire;
        ZQcread();
        $num = (int) $num*3;
        $classid = (int)$classid;
       // 获取所有的文件
        $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and `bclassid` != 0"); 
        if(empty($hm_class[classid])){
            // 随机调用
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
        }else{
            //调用栏目
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/classId.json"),true);
            $file_arrs = $file_arrs[$classid];
        }
        if(empty($file_arrs)){
            return '';
        }else{
            for ($rani=0; $rani<$num; $rani++){
                $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";    
            }
            $rand_id = rtrim($rand_id,",");
            $where = "id in ($rand_id)";
            return $where;
        }
    }
    
    function ZQcread(){//创建缓存文件
        global $dbtbpre,$empire;
        /* 检测json文件是否存在 */
        $class_cache = ECMS_PATH."d/json/classId.json";
        $all_cache =  ECMS_PATH."d/json/allId.json";
        //缓存整个news表的数据
        // time()-@filemtime($file_cache)>86400
        if(!file_exists($class_cache) || !file_exists($all_cache)){
            //创建文件夹
            @mkdir(ECMS_PATH."d/json/",0777);
            //查询分类
            $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))
                {
                    $class_data[$hm_r['classid']][] = $hm_nr[id];
                    $all_data[] = $hm_nr[id];
                }
            }
            file_put_contents($class_cache,json_encode($class_data));
            file_put_contents($all_cache,json_encode($all_data));
        }
    }

    客户反馈高效率调用会出现bug,经过查证发现,主要是num参数限制了,已改进

    10.5 根据自己的需求修改,备份于此

    function ZQrand($classid , $num = 60){
        global $dbtbpre,$empire;
        /* 检测json文件是否存在 */
        $file_arrs = glob(ECMS_PATH."d/json/*.json");
        $file_cache = $file_arrs[0];
        //缓存整个news表的数据
        if(!file_exists($file_cache)){
            //创建文件夹
            @mkdir(ECMS_PATH."d/json/",0777);
            //查询分类
            $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_nr[id];
                }
                file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
                unset($news_data);
            }
            //查询所有
            $more = 0;
            $hm_news2=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news`"); 
            while($hm_nr2=$empire->fetch($hm_news2))
            {
                $all_id[] = $hm_nr2[id];
                if($more>=1000){
                    file_put_contents(ECMS_PATH . "d/json/allId{$hm_nr2[id]}.json",json_encode($all_id));
                    unset($all_id);
                    $more = 0;
                }
                $more++;
            }
            
        }
        $num = (int) empty($num)?10:$num;
        $classid = (int)$classid;
       // 获取所有的文件
        $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and bclassid != 0"); 
        if(empty($hm_class[classid])){
            // 随机调用
            $file_arrs = glob(ECMS_PATH."d/json/allId*.json");
            $counts = count(glob(ECMS_PATH."d/json/allId*.json")) - 1;
            // print_r($file_arrs);
            // echo $counts;
            $file_arrs = $file_arrs[mt_rand(0,$counts)];
            // echo $file_arrs;
            $file_arrs = json_decode(file_get_contents($file_arrs),true);
        }else{
            //调用栏目
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
        }
        if(empty($file_arrs)){
            return '';
        }else{
            for ($rani=1; $rani<=$num; $rani++){
                $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";   
                // echo mt_rand(1,500);
            }
            $rand_id = rtrim($rand_id,",");
            $where = "id in ($rand_id)";
            return $where;
        }
    }
    


    站长源码网 » 帝国高效率随机调用功能扩展

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元