个人网站php源码分享 php公司网站源码

大家好,如果您还对个人网站php源码分享不太了解,没有关系,今天就由本站为大家分享个人网站php源码分享的知识,包括php公司网站源码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

PHP程序在抵抗大流量访问的时候动态网站往往都是难以招架,所以要引入缓存机制,一般情况下有两种类型缓存:一、文件缓存二、数据查询结果缓存,使用内存来实现高速缓存本例主要使用文件缓存,主要原理使用缓存函数来存储网页显示结果,如果在规定时间里再次调用则可以加载缓存文件。

类代码:

//资源宝分享:www.httple.net\n//文件缓存类\nclassCache{\n/**\n*$dir:缓存文件存放目录\n*$lifetime:缓存文件有效期,单位为秒\n*$cacheid:缓存文件路径,包含文件名\n*$ext:缓存文件扩展名(可以不用),这里使用是为了查看文件方便\n*/\nprivate$dir;\nprivate$lifetime;\nprivate$cacheid;\nprivate$ext;\n/**\n*析构函数,检查缓存目录是否有效,默认赋值\n*/\nfunction__construct($dir=&39;,$lifetime=1800){\nif($this->dir_isvalid($dir)){\n$this->dir=$dir;\n$this->lifetime=$lifetime;\n$this->ext=&39;;\n$this->cacheid=$this->getcacheid();\n}\n}\n/**\n*检查缓存是否有效\n*/\nprivatefunctionisvalid(){\nif(!file_exists($this->cacheid))\nreturnfalse;\nif(!(@$mtime=filemtime($this->cacheid)))\nreturnfalse;\nif(mktime()-$mtime>$this->lifetime)\nreturnfalse;\nreturntrue;\n}\n/**\n*写入缓存\n*$mode==0,以浏览器缓存的方式取得页面内容\n*$mode==1,以直接赋值(通过$content参数接收)的方式取得页面内容\n*$mode==2,以本地读取(fopenile_get_contents)的方式取得页面内容(似乎这种方式没什么必要)\n*/\npublicfunctionwrite($mode=0,$content=&39;){\nswitch($mode){\ncase0:\n$content=ob_get_contents();\nbreak;\ndefault:\nbreak;\n}\nob_end_flush();\ntry{\nfile_put_contents($this->cacheid,$content);\n}catch(Exception$e){\n$this->error(&39;);\n}\n}\n/**\n*加载缓存\n*exit()载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存\n*ob_start()开启浏览器缓存用于在页面结尾处取得页面内容\n*/\npublicfunctionload(){\nif($this->isvalid()){\n//以下两种方式,哪种方式好?????\nrequire_once($this->cacheid);\necho&34;;\n//echofile_get_contents($this->cacheid);\nexit();\n}else{\nob_start();\n}\n}\n/**\n*清除缓存\n*/\npublicfunctionclean(){\ntry{\nunlink($this->cacheid);\n}catch(Exception$e){\n$this->error(&39;);\n}\n}\n/**\n*取得缓存文件路径\n*/\nprivatefunctiongetcacheid(){\nreturn$this->dir.md5($this->geturl()).$this->ext;\n}\n/**\n*检查目录是否存在或是否可创建\n*/\nprivatefunctiondir_isvalid($dir){\nif(is_dir($dir))\nreturntrue;\ntry{\nmkdir($dir,0777);\n}catch(Exception$e){\n$this->error(&39;);\nreturnfalse;\n}\nreturntrue;\n}\n/**\n*取得当前页面完整url\n*/\nprivatefunctiongeturl(){\n$url=&39;;\nif(isset($_SERVER[&39;])){\n$url=$_SERVER[&39;];\n}else{\n$url=$_SERVER[&39;];\n$url.=empty($_SERVER[&39;])?&39;:&39;.$_SERVER[&39;];\n}\nreturn$url;\n}\n/**\n*输出错误信息\n*/\nprivatefunctionerror($str){\necho&34;color:red;&39;.$str.&39;;\n}\n}

使用方法:

一部分代码放在要被缓存逻辑代码前面:

$cachedir=&39;;//设定缓存目录\n$cache=newCache($cachedir,33);//省略参数即采用缺省设置,$cache=newCache($cachedir);\nif(@$_GET[&39;]!=&39;||@$_GET[&39;]==&39;)//此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作\n$cache->load();//装载缓存,缓存有效则不执行以下页面代码\n//页面代码开始

一部分放在被缓存逻辑代码后面:

//页面代码结束\n$cache->write();//首次运行或缓存过期,生成缓存

如果你还想了解更多这方面的信息,记得收藏关注本站。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平