缓存相关知识学习笔记.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP 缓存相关知识学习笔记 由头 最近,周围的几个同事跳槽升级,弄的自己也心里很痒。关心了一下相关面试笔试的内容,大部分地方对于PHP 的缓存技术都有过询问。 之前自己做的几个项目,都是简单的B/S 架构的存取数据库数据的控制面板的咚咚,用户量撑死也就在几百到 几天人不等。基本上不用考虑性能和优化的问题。( 无论是Web 的优化,还是数据库的优化 ) 不过,真正大的公司和PHP 的项目,都是要考虑这方面的东西的。因此,就揪出这个知识点出来突击一下。 关于PHP 的缓存 为什么要缓存 为什么需要缓存,缓存的目的就是加速页面的载入,因此使用缓存之后,你的请求将会直接去获取 html 文件, 传统的动态页面从数据库中获取数据,然后用程序 将数据显示出来的这个过程就被绕过去了,而这个过程是最消 耗系统资源的过程,静态页面传送过程中,系统 I/O 所占用的资源相比之下就可以忽略了。当然,更 传统的其实还 是静态页面,因为它出现在动态页面之前。有人说用缓存更新不及时,不够快,所以很不方便,这也是很有道理的, 但是仅仅是因为这样就放弃使用缓存,或许不太划算,特别是在你服务器压力比较大的情况下。 什么是缓存 顾名思义,缓存是一块设定了缓冲功能的内存区域,用于提供数据的高速缓冲。无论是针对硬件的CPU 的缓存, 硬盘的缓存。都是起到减少不比要的I/O 访问,提高数据访问速度的目的。 缓存的形式 字面上,缓存就应该是内存的一个部分。但是,也有其他形式的缓存。 CPU 上的缓存可以有2 到3 级RAM,是现在CPU 设计中一个重要的组成部分。同样,硬盘上的Flash RAM 芯片, 承担了缓存的作用。 而针对应用软件系统,例如:Memcached 这样的软件,从物理内存中划去了一部分空间,为各种应用程序提供 缓存服务。 针对特殊的Web + DB 的这种B/S 业务系统,还有类似的生成静态页,减少数据库存取I/O 操作的缓存方式。 PHP 缓存的具体方法 针对PHP 这种具体的B/S 架构的脚本语言,有几种常见的缓存形式。 文件缓存: 文件缓存是PHP 缓存的十分常见的一种形式。其主要目的是将页面中不经常变更的数据保存在文件中,当有用 户请求访问的时候,直接将数据调出,避免了再次对数据库的请求的I/O 操作,减少了数据库的负载压力。 一般情况下,PHP 的文件缓存分为两种方法: 第一种,把需要缓存的数据进行处理,形成 PHP 可以直接执行的文件。在需要缓存数据的时候,通过 include 方式引入,并使用。 第二种,把需要的数据通过serialize 函数序列化后直接保存到文件。在需要使用缓存数据的时候,通过反序列 化读入文件内容并复制给需要的变量,然后使用。当然,这里说到的serialize 函数是PHP 自带的serialize()函数。针 对该函数的改进问题,后续的章节将会提及。 通过测试发现,第二种也就是serialize 缓存数据的方式更加高效。 分析原因: include 方式读取缓存的时候,PHP 需要执行几个过程 1.读取文件 2.解析所Include 的文件 3.执行,给变量赋值 而serialize 序列化方式读取缓存的时候: 1.读取数据 2.反序列化数据内容 3.给变量赋值 从以上内容对比的话,可能是由于解析PHP 文件内的数组需要的时间超过unserialize 反序列化数组的时间。 测试代码: CacheTest_IncludeFile.php ?php $t1 = gettimeofday(); for ($i = 0; $i 10000; $i++){ include(CacheTest_IncludeData.php); } $t2 = gettimeofday(); echo ($t2[sec] - $t1[sec]) * 1000 + ($t2[usec] - $t1[usec]) / 1000 . \n; CacheTest_IncludeData.php ?php $testarray = array ( mtime = 0, values = array ( 0 = array ( id

文档评论(0)

野草 + 关注
内容提供者

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

1亿VIP精品文档

相关文档