首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 我是PHP新手``````什么是缓存 什么又是缓冲``
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 13:08:26 楼主
    我是PHP新手``````什么是缓存 什么又是缓冲``
    不知道什么意思 希望大家帮我解释一下  或提供点好贴  谢谢``````````````````
    80  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iasky
    • 等级:
    发表于:2008-04-06 13:11:391楼 得分:0
    不知道你在说什么?Cache?还是指的这个

    http://cn.php.net/manual/zh/ref.outcontrol.php
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 13:15:022楼 得分:0
    你说的缓存,应该是一个副本,比如你要生成的页面,很多数据库查询操作,但是又不需要经常更新,可以产生缓存的办法来避免过多的数据库查询,比如:

    <?php
    if(缓存的html没过期)
      header("location: x.html");
    else{
        查询数据库,生成页面 $html;
        $fp = fopen("x.html");
        fwrite($fp, $html ... );
    }
    ?>

    这个x.html就是缓存。

    而缓冲就是 $buffer = str();
    这个缓冲区在php中并不明显,没什么作用,因为空间本来就是任意分配,并且会被回收的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 13:16:123楼 得分:0
    iasky说的ob些列函数,用于页面缓冲。请LZ看看说明。 :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 13:21:424楼 得分:0
    明白一些 呵呵`````````
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-07 13:55:455楼 得分:0
    一个利用缓冲区来刷静态文件的类.希望能给你一些帮助...
    PHP code
    <? /** * 进行文件刷静态处理. * * 这里是详细说明. * @author 徐兴 * @package lib * @version v1.0 * @copyright juwangTech. * */ class obClass { /** * * * @var 目标静态文件 $destFile * @var 目标旗帜 $lifeFlag * @var 文件句柄s $fp */ private $destFile; private $lifeFlag; private $fp; function obClass() { } //加载文件 function loadFile( $destFile ) { $this->destFile = $destFile; //$this->lifeFlag = time() - fileatime($this->destFile); } /** * 检查文件的存在时间. * * @param 所指定文件的存在时间 $time * @return bool */ function check( $time ) { if(file_exists( $this->destFile )) { $this->lifeFlag = $time + fileatime( $this->destFile ) - time(); } else { $this->lifeFlag = -1; } if($this->lifeFlag > 0) { if(DEBUG == '1') echo "此文件在指定生存期内,不进行刷静态"; return false; } else { if(DEBUG == '1') echo "开始刷静态文件".$this->destFile."<hr/>"; ob_start(); return true; } } /** * 将缓冲写入到文件中去.. * */ function write() { if( $this->lifeFlag > 0 ) exit(); $this->fp = fopen( $this->destFile , "w" ); fwrite( $this->fp , ob_get_contents() ); ob_clean(); if( DEBUG == '1' ) echo "开始刷静态文件".$this->destFile."<hr/>"; fclose( $this->fp ); } } ?>


    使用demo
    PHP code
    <? if(!defined("DEBUG")) define("DEBUG","1"); require("../obClass.php"); /** ob 类的使用流程* * 1一新建一个ob对象。 * 2二加载需要ob的文件 * 3判断文件生存时间,写入要刷表态的内容,刷静态处理. */ //一新建一个ob对象 $ob = new obClass(); // 二加载需要ob的文件 for($i = 0;$i < 100; $i++) { $dest_file = "/home/httpd/web/static/".rand(0,100).".html"; $ob->loadFile($dest_file); //3判断文件生存时间,写入要刷表态的内容,刷静态处理. if($ob->check(0)) { echo "$dest_file"; echo ""; $ob->write(); } } ?>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • justicesun
    • 等级:
    发表于:2008-04-07 15:58:216楼 得分:0
    缓存cache一般用于高速存储.解决速度匹配瓶颈问题...
    就像cpu&mem的频率,引入cpu一级,二级缓存后,使缓存命中率提升会使整个访问存储器的平均访问时间

    缓冲无关于命中率,当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区.为了读写方便

    区别
    1缓存是硬件实现,缓冲是软件实现
    2缓存为提高命中率,缓冲为了读写方便
    3缓存对软件程序员是透明的,缓冲不是
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-16 11:42:047楼 得分:0
    请教一下striker_un ,你5楼demo中
    的$i循环100次是作什么用的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-16 11:52:278楼 得分:0
    不好意思,明白
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved