红穆笔记
首頁 程序筆記 帝國cms全站高效率隨機調用(毫秒級調用)
程序筆記 帝國cms

帝國cms全站高效率隨機調用(毫秒級調用)

帝国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秒左右。

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

帝国CMS数据库语句&amp;SQL语句格式

帝國CMS數據庫語句&amp;SQL語句格式 程序筆記 帝國cms

帝國CMS擴展SQL程序編寫介紹,帝國CMS數據庫語句&SQL語句格式基本範例:說明:下面例子都是以PHP文件放在系統根目錄爲基準。例1:連接MYSQL程序。(a.php)&lt;?php require('e/class/connect.php'); //引入數據庫配置文件和公共函數文件 requ…
👁 351
帝国CMS获取系统COOKIE变量函数getcvar()

帝國CMS獲取系統COOKIE變量函數getcvar() 程序筆記 帝國cms

取得系統COOKIE變量函數語法:getcvar($var,$ecms)說明:$var:爲變量名$ecms:0爲設置前臺COOKIE變量,1爲設置後臺COOKIE變量。此參數可省略,默認爲0。使用範例:getcvar('mlusername'),取得前臺登陸會員的用戶名getcvar('loginu…
👁 295
帝国CMS灵动标签调用字段大全

帝國CMS靈動標籤調用字段大全 程序筆記 帝國cms

將所有支持靈動標籤調用的字段收集歸類帝國CMS靈動標籤: [e:loop={欄目ID/專題ID,顯示條數,操作類型,只顯示有標題圖片,附加SQL條件,顯示排序}] 模板代碼內容 [/e:loop]調用時間:&lt;?=date('m-d',$bqr[newstime])?&gt; &lt;?=dat…
👁 3749

推薦閱讀

PHP 删除指定目录下面指定文件后缀文件

PHP 刪除指定目錄下面指定文件後綴文件 語言筆記 PHP

可以使用 PHP 的 glob 函數來匹配指定目錄下的文件名,使用 unlink 函數來刪除。具體操作步驟如下:使用 glob 函數匹配指定目錄下的文件名,並保存在一個數組中,代碼如下:$files = glob('/path/to/dir/*.txt');其中 /path/to/dir 是指要操作…
👁 239
(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目 0980

(自適應手機端)物流運輸快遞倉儲網站模板 - 帶三級欄目 0980 實用收藏 pbootcms模板

一款物流運輸快遞倉儲PbootCMS網站模板,支持PC與WAP端,帶三級欄目。設計風格高效現代,適合快遞、倉儲公司展示服務網絡與配送實力。有助於物流企業在線上展示品牌,吸引電商與企業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5…
👁 74
(PC+WAP)安保服务网站模板 0981

(PC+WAP)安保服務網站模板 0981 實用收藏 pbootcms模板

一款安保服務PbootCMS網站模板,支持PC與WAP端。設計風格專業穩重,適合安保公司、物業管理企業展示服務內容與資質。有助於安保服務公司在線上建立品牌形象,吸引客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相關文章Pb…
👁 32
(自适应手机端)酒店床上用品英文外贸网站模板 - 带下载功能和三级栏目 0982

(自適應手機端)酒店牀上用品英文外貿網站模板 - 帶下載功能和三級欄目 0982 實用收藏 pbootcms模板

一款酒店牀上用品英文外貿PbootCMS網站模板,支持PC與WAP端,帶下載功能和三級欄目。設計風格專業國際,適合酒店布草外貿企業展示產品與品牌。有助於外貿企業在全球市場上進行品牌推廣。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.…
👁 42
资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 198