PHP网页编程之PHP缓存道理及利用办法
总的来说,在这一个月左右的时间中,学到的不少,但是也遇到不少的问题,比如批量图片的上传,一直到现在也不懂,如何实现动态的增加上传图片的数量。 PHP因为它的壮大和可伸缩性,近几年来失掉长足的开展,PHP比拟传统的ASP网站,在速度上有相对的 优势,想mssql转6万条数据PHP如需求40秒,ASP不下2分钟.然而,因为网站的数据愈来愈多,咱们渴求能更疾速的挪用数据,不用要每次都从数据 库失落,咱们可以从其他的中央,例如一个文件,或某个内存地址,这就是PHP的缓存手艺,也就是Cache手艺。剖析深切
普通来讲,缓存的目标是把数据放在一个中央让会见的更快点,毫无疑问,内存是最快的,然而,几百M的数据能往内寄存么?这不实际,固然,有的时 候一时放如办事器缓存,如ob_start()这个缓存页面开启的话在发送文件头之前页面内容都被缓存在内存中,晓得等页面输入主动清晰或守候 ob_get_contents的前往,或被ob_end_clean显示的排除,这在静态页面的生成中能很好的使用,在模板中能失掉很好的表现。
别的,在ASP中有一对象application,可以保留公用的参数,这也算点缓存,但在PHP,我至今没看到开辟者产出这类对象,切实其实,没 需要.ASP.NET的页面缓存手艺就用的是viewstate,而cache就是文件联系关系,(纷歧定正确),文件被修正,更新缓存,文件没被修正并且不 超时(正文1),就读取缓存,前往了局,就是这个思绪,看看这个源码:
<?PHP class cache{ 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 .= (!emptyempty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : ''; } return $url; } function warn($errorstring){ echo "<b><font 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); return true; } function display_cache($cacheFile){ if(!file_exists($cacheFile)){ $this->warn('没法
读取缓存文件.');//trigger_error return false; } echo '读取缓存文件:'.$cacheFile; //return unserialize(file_get_contents($cacheFile)); $fso = fopen($cacheFile, 'r'); $data = fread($fso, filesize($cacheFile)); fclose($fso); return $data; } function readData($cacheFile='default_cache.txt'){ $cacheFile = $this->cache_dir."/".$cacheFile; if(file_exists($cacheFile)&&filemtime($cacheFile)>(time()-$this->expireTime)){ $data=$this->display_cache($cacheFile); }else{ $data="from here wo can get it from mysql database,update time is <b>".date('l dS \of F Y h:i:s A')."</b>,过时
工夫
是:".date('l dS \of F Y h:i:s A',time()+$this->expireTime)."----------"; $this->cache_page($cacheFile,$data); } return $data; } } ?> <p><font color="#FF0000">一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧! 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 基础有没有对学习php没有太大区别,关键是兴趣。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 本文当是我的笔记啦,遇到的问题随时填充 基础有没有对学习php没有太大区别,关键是兴趣。 兴趣是最好的老师,百度是最好的词典。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
页:
[1]