仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1759|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP缓存道理及利用办法

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:22:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
总的来说,在这一个月左右的时间中,学到的不少,但是也遇到不少的问题,比如批量图片的上传,一直到现在也不懂,如何实现动态的增加上传图片的数量。   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),就读取缓存,前往了局,就是这个思绪,看看这个源码:
  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代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-23 14:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表