PHP缓存技术详谈.doc

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

1# 大 中 小 发表于 2007-1-4 15:32? 只看该作者 [转载]PHP缓存技术详谈 一、引论 PHP,一门最近几年兴起的web设计脚本语言,由于它的强大和可伸缩性,近几年来得到长足的发展,php相比传统的asp网站,在速度上有绝对的优势,想mssql转6万条数据php如需要40秒,asp不下2分钟.但是,由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库掉,我们可以从其他的地方,比方一个文件,或者某个内存地址,这就是php的缓存技术,也就是Cache技术. 二、分析深入 一般来说,缓存的目的是把数据放在一个地方让访问的更快点,毫无疑问,内存是最快的,但是,几百M的数据能往内存放么?这不现实,当然,有的时候临时放如服务器缓存,如ob_start()这个缓存页面开启的话在发送文件头之前页面内容都被缓存在内存中,知道等页面输出自动清楚或者等待ob_get_contents的返回,或者被ob_end_clean显示的清除,这在静态页面的生成中能很好的利用,在模板中能得到很好的体现,我的这篇文章深入的讨论了:谈PHP生成静态页面,这是一种方式,但这是临时性的,不是解决我们问题的好方法. 另外,在asp中有一对象application,可以保存公用的参数,这也算点缓存,但在php,我至今没看到开发者产出这种对象,的确,没必要.的页面缓存技术就用的是viewstate,而cache就是文件关联,(不一定准确),文件被修改,更新缓存,文件没被修改而且不超时(注释1),就读取缓存,返回结果,就是这个思路,看看这个源码: 复制PHP内容到剪贴板 PHP代码: ?php class?cache{ /* Class?Name:?cache Description:?control?to?cache?data,$cache_out_time?is?a?array?to?save?cache?date?time?out. Version:?1.0 Author:?老农?cjjer Last?modify:2006-2-26 Author?URL:[url=][/url] */ private?$cache_dir; private?$expireTime=180;//缓存的时间是?60?秒 function?__construct($cache_dirname){ ?if(!@is_dir($cache_dirname)){ ??if(!@mkdir($cache_dirname,0777)){ ??$this-warn(缓存文件不存在而且不能创建,需要手动创建.); ??return?false; ??} ?} $this-cache_dir?=?$cache_dirname; } function?__destruct(){ ?echo?Cache?class?bye.; } function?get_url()?{ ????????if?(!isset($_SERVER[REQUEST_URI]))?{ ????????????????$url?=?$_SERVER[REQUEST_URI]; ????????}else{ ????????????????$url?=?$_SERVER[SCRIPT_NAME]; ????????????????$url?.=?(!empty($_SERVER[QUERY_STRING]))?????.?$_SERVER[QUERY_STRING]?:?; ????????} ????????return?$url; } function?warn($errorstring){ echo?bfont?color=red发生错误:pre.$errorstring./pre/font/b; } function?cache_page($pageurl,$pagedata){ ?if(!$fso=fopen($pageurl,w)){ ??$this-warns(无法打开缓存文件.);//trigger_error ??return?false; ?} ?if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定 ??$this-warns(无法锁定缓存文件.);//trigger_error ??return?false; ?} ?if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式 ??$this-warns(无法写入缓存文件.);//trigger_error ??return?false; ?} ?flock($fso,LOCK_UN);//释放锁定 ?fclose($fso); ?ret

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档