国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

PHPCMS 中 cache_count() 函數的作用

2024-09-10 07:16:05
字體:
來源:轉載
供稿:網友

原先我不明白 cache_count 有什么作用,現在談談它的用法.

cache_count() 函數第一次看到是在 PHPCMS2008 中,作用是緩存一條 COUNT(*) SQL 查詢的結果,如:

cache_count("SELECT COUNT(*) AS count FROM ...")

有一次在寫一個后臺分頁功能時,統計 COUNT(*) 總數的查詢使用了 cache_count 做緩存,但在測試分頁功能時發現分頁無效,本來應有第二頁的,但分頁結果卻還是只有一頁,原來是因為統計的查詢語句被 cache_count 緩存了且緩存有效期還未過,因此分頁結果還是原來的一頁.

當時我斷定,cache_count 既影響測試又沒用.

但是我錯了,想象一下:

總共有 88331 條記錄,每頁顯示 20 條,共 4417 頁。列表頁是前臺頁面,假設有 10 個并發訪問,每個都訪問不同的頁數,比如 1, 3, 5 頁.

于是我發現,COUNT(*) 的結果實際上是一樣的,無論是第 1 頁,還是第 1000 頁,只要數據不變,COUNT(*) 也不會變,實際上,當頁數大于 1000 頁以后,那怕每天增加 100 頁左右的記錄數,由于增加的記錄是排在前面的,今天的頁數到底是 4417 還是 4517 一點關系都沒有——根本不會有真正的用戶會去看第 4500 多頁的數據.

設現在統計 COUNT(*) 需要用時 0.1(s),每天列表頁會被訪問 100 次,那么,COUNT(*) 總用時為 0.1*100 = 10(s) ——花 10(s) 去取 100 個相同的結果.

所以要用 cache_count,緩存有效期為 1 天,于是,無論今天列表頁被訪問多少次,都只需執行一次 0.1(s) 的統計,后面每次讀取緩存只需用時約 0.0002(s).

訪問次數越多,節省的時間就越多,這就是 cache_count 的作用,所以,列表頁都可以用 cache_count(),唯一需要注意的只是根據數據量的不同設計不同的緩存有效期.

PHPCMS cache_count() 的緩存有效期用常量定義,這不方便靈活地控制每條查詢的緩存有效期,所以我把緩存有效期也加入為 cache_count 的參數,原形如下:

cache_count($sql, $timeout = 默認緩存有效期)

%%

# 歷史

2011-10-14 初稿,包含 cache_count() 及 page_select() 兩個函數的說明.

2012-04-22 刪除 page_select() 函數的說明,只說明 cache_count() 函數.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 波密县| 泸定县| 新竹市| 乐业县| 澄迈县| 承德县| 栾川县| 宁南县| 江西省| 尚义县| 定南县| 昭通市| 阿城市| 潢川县| 桂东县| 安陆市| 思南县| 株洲市| 炎陵县| 江源县| 桓仁| 高青县| 离岛区| 盐山县| 祁东县| 阿克| 丹寨县| 大石桥市| 同心县| 岳阳市| 汉源县| 北辰区| 敖汉旗| 伊川县| 沾化县| 东乡县| 庄浪县| 鞍山市| 兰州市| 郁南县| 额济纳旗|