我是PHP新手``````什么是缓存 什么又是缓冲`` 我是PHP新手``````什么是缓存 什么又是缓冲``不知道什么意思 希望大家帮我解释一下 或提供点好贴 谢谢`````````````````` 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你在说什么?Cache?还是指的这个http://cn.php.net/manual/zh/ref.outcontrol.php 你说的缓存,应该是一个副本,比如你要生成的页面,很多数据库查询操作,但是又不需要经常更新,可以产生缓存的办法来避免过多的数据库查询,比如:<?phpif(缓存的html没过期) header("location: x.html");else{ 查询数据库,生成页面 $html; $fp = fopen("x.html"); fwrite($fp, $html ... );}?>这个x.html就是缓存。而缓冲就是 $buffer = str();这个缓冲区在php中并不明显,没什么作用,因为空间本来就是任意分配,并且会被回收的。 iasky说的ob些列函数,用于页面缓冲。请LZ看看说明。 :) 一个利用缓冲区来刷静态文件的类.希望能给你一些帮助...<?/*** 进行文件刷静态处理.* * 这里是详细说明.* @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<?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(); }} ?> 缓存cache一般用于高速存储.解决速度匹配瓶颈问题...就像cpu&mem的频率,引入cpu一级,二级缓存后,使缓存命中率提升会使整个访问存储器的平均访问时间缓冲无关于命中率,当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区.为了读写方便区别1缓存是硬件实现,缓冲是软件实现2缓存为提高命中率,缓冲为了读写方便3缓存对软件程序员是透明的,缓冲不是 请教一下striker_un ,你5楼demo中的$i循环100次是作什么用的? 怎么插入数据库,菜鸟求代码, 急~~哪位大侠来帮忙呀 谢谢呀 php搜索问题 性别字段设置成什么类型呀? 这个函数参数起啥作用? 100分! nusoap 返回数组 求一个课程安排系统的设计的意见!老鸟与高手请进 请教:关联读取数据库数据的问题 哪里有用php写的对SQL Server数据库操作类 有上传过php+mysql网站的人吗? php请求接口代码看不懂,请求大神讲解下,跪谢 灌水: 一封垃圾邮件,好像挺深奥的 如何屏蔽服务器上强制弹出的广告?内详 (在线等,解决了马上结贴!)
if(缓存的html没过期)
header("location: x.html");
else{
查询数据库,生成页面 $html;
$fp = fopen("x.html");
fwrite($fp, $html ... );
}
?>这个x.html就是缓存。而缓冲就是 $buffer = str();
这个缓冲区在php中并不明显,没什么作用,因为空间本来就是任意分配,并且会被回收的。
/**
* 进行文件刷静态处理.
*
* 这里是详细说明.
* @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<?
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();
}
} ?>
就像cpu&mem的频率,引入cpu一级,二级缓存后,使缓存命中率提升会使整个访问存储器的平均访问时间缓冲无关于命中率,当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区.为了读写方便区别
1缓存是硬件实现,缓冲是软件实现
2缓存为提高命中率,缓冲为了读写方便
3缓存对软件程序员是透明的,缓冲不是
的$i循环100次是作什么用的?