PHP企业级应用之常见缓存技术篇.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP企业级应用之常见缓存技术篇

PHP企业级应用之常见缓存技术篇 作者: cnblog?来源: 博客园??发布时间: 2011-01-28 16:07??阅读: 33 次??原文链接?? 全屏阅读  [收藏]?? 编辑点评:本文主要讲解PHP企业级应用之常见缓存技术,从基本的PHP缓存概念到技术代码的实现都深入做了解读。数据缓存:这里所说的数据缓存是指数据库查询缓存。   普遍缓存技术   数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据, 并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。 用的最广的例子看Discuz的有哪些信誉好的足球投注网站功能,把结果ID缓存到一个表中,下次有哪些信誉好的足球投注网站相同关键字时先有哪些信誉好的足球投注网站缓存表。   举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个 数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。   页面缓存:   每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)   时间触发缓存:   检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。   内容触发缓存:   当插入数据或更新数据时,强制更新缓存。   静态缓存:   这里所说的静态缓存是指静态化,直接生成HTML或xml等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。   以上内容是代码级的解决方案,我直接CP别的框架,也懒得改,内容都差不多,很容易就做到,而且会几种方式一起用,但下面的内容是服务器端的缓存方 案,非代码级的,要有多方的合作才能做到   内存缓存:   Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。   这里说下Memcached的例子: 1. ?php 2. $memcache = new Memcache; 3. $memcache-connect(‘localhost’, 11211) or die (“Could not connect”); 4. $version = $memcache-getVersion(); 5. echo “Server’s version: “.$version.”\n”; 6. $tmp_object = new stdClass; 7. $tmp_object-str_attr = ‘test’; 8. $tmp_object-int_attr = 123; 9. $memcache-set(‘key’, $tmp_object, false, 10) or die (“Failed to save data at the server”); 10. echo “Store data in the cache (data will expire in 10 seconds)\n”; 11. $get_result = $memcache-get(‘key’); 12. echo “Data from the cache:\n”; 13. var_dump($get_result); 14. ?   读库的例子: 1. ?php 2. $sql = ‘SELECT * FROM users’; 3. $key = md5($sql); //memcached 对象标识符 4. if ( !($datas = $mc-get($key)) ) { 5. // 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。 6. echo “n”.str_pad(‘Read datas from MySQL.’, 60, ‘_’).”n”; 7. $conn = mysql_connect(‘localhost’, ‘test’, ‘test’); 8. mysql_select_db(‘test’); 9. $result = mysql_query($sql); 10. while ($row = mysql_fetch_object($result))

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档