PHPCMS 中 cache_count() 函数的作用
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-24 16:49:44 浏览: 评论:0
原先我不明白 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() 函数.
Tags: PHPCMS函数 cache_count() 函数
- 上一篇:Phpcms V9 后台实现全栏目搜索
- 下一篇:phpcms2008 系统结构
相关文章
- ·phpcms subcat 函数的使用方法(2014-10-20)
- ·phpcms 函数之 subcat() (2014-10-20)
- ·【phpcms-v9】phpcms-v9中模板载入函数template详解(2014-10-24)
- ·phpcms template函数分析(2014-10-24)
- ·PHPCMS2008常用函数(2014-10-31)
- ·PHPCMS 常用函数(2014-10-18)
- ·phpcms v9 数据库操作函数(2014-10-19)
- ·phpcms v9用subcat函数调出指定栏目的所有子栏目(2014-10-19)
- ·phpcms v9 修改系统函数str_cut()(2014-10-21)
- ·phpcms2008 GET函数的几种循环读取数据方法(2014-10-21)
- ·PHPCMS模版解析之TEMPLATE函数(2014-10-22)
- ·【phpcms-v9】改造phpcms-v9自带的字符串截取函数(2014-10-23)
- ·【phpcms-v9】phpcms-v9中自定义全局函数文件:extention.func.php(2014-10-24)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)