国产探花免费观看_亚洲丰满少妇自慰呻吟_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() 函數.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽阳县| 阿图什市| 南阳市| 通城县| 新巴尔虎右旗| 仙居县| 广宁县| 大连市| 汉川市| 铜川市| 邹平县| 浦城县| 寿光市| 南和县| 西丰县| 泸水县| 石台县| 岢岚县| 富蕴县| 睢宁县| 阿拉善右旗| 安吉县| 都匀市| 洪洞县| 肇东市| 中江县| 资兴市| 清镇市| 云阳县| 独山县| 西昌市| 巩留县| 昌都县| 会同县| 清镇市| 廊坊市| 东阳市| 龙泉市| 孟州市| 平果县| 黎川县|