概要:态页面的:我们用函数来实现吧![php]#write by yayufunction createStaticPage($sourcePage,$objectPage)#来源文件,目标文件{#得到两个参数,一个是来源文件地址,一个是需要生成的静态页面地址global $db; #数据库连接用的,在$sourcePage中需要用到ob_start(); #打开缓冲区,相当于做了一个用来存放东西的箱子include $sourcePage; #在缓冲区中释放页面,从这个代码中应该可以明白一点:那就是$sourcePage页面单独查看的时候,它是可以显示的!这是关键之所在,如果后面不加ob_end_clean()函数,那在执行程序的时候你看见$sourcePage页面的内容。$cons=ob_get_contents(); #得到缓冲区中的内容,这里的内容就是HTML代码!这相当于把箱子里面的东西转给了一个人!ob_end_clean(); #清除缓冲区的内容,把箱子里面的东西转给他人后,打扫卫生,不打扫卫生的后果是让他人可以看见箱子的东西,也即可以看见$sourcePage页面的内容$fp=fopen($objectPage,"wb") or die("静态生成时打开文件".$objectPage."时出错");fwrite($fp,$cons); #把HTML代码
浅谈PHP生成静态页的两种方法,http://www.99xxk.com相关函数说明如下:
1、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。
为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
2 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
3、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
精彩开始了,看看我们是如何利用输出缓冲生成静态页面的:
我们用函数来实现吧!
[php]
#write by yayu
function createStaticPage($sourcePage,$objectPage)#来源文件,目标文件
{
#得到两个参数,一个是来源文件地址,一个是需要生成的静态页面地址
global $db; #数据库连接用的,在$sourcePage中需要用到
ob_start(); #打开缓冲区,相当于做了一个用来存放东西的箱子
include $sourcePage; #在缓冲区中释放页面,从这个代码中应该可以明白一点:那就是$sourcePage页面单独查看的时候,它是可以显示的!这是关键之所在,如果后面不加ob_end_clean()函数,那在执行程序的时候你看见$sourcePage页面的内容。
$cons=ob_get_contents(); #得到缓冲区中的内容,这里的内容就是HTML代码!这相当于把箱子里面的东西转给了一个人!
ob_end_clean(); #清除缓冲区的内容,把箱子里面的东西转给他人后,打扫卫生,不打扫卫生的后果是让他人可以看见箱子的东西,也即可以看见$sourcePage页面的内容
$fp=fopen($objectPage,"wb") or die("静态生成时打开文件".$objectPage."时出错");
fwrite($fp,$cons); #把HTML代码写入静态文件中!
fclose($fp);
return true;
}
[/php]
总结:
1. 两种方法都有把内容写入你要生成的静态页面中的一步。
2. 当可以使用第一种方法时就使用第一种方法,因为第二种方法要通过数据库调内容并显示(也可以说是隐藏了显示的内容,但事实上$sourcePage里的程序是执行的)的过程。
3. 具体情况其他分析,在使用模板生成时由于可能直接使用表单提交的内容,所以需要过滤之类的检查。
我用动态的缓存 三个函数实现最简单的缓存更能
function getQueryCache($key){
$cacFile = "cache/" . $key . ".php";
if(file_exists($cacFile)){
@include($cacFile);
return $cacValue;
}
return false;
}
function setQueryCache($key, & $result){
$cacFile = "cache/" . $key . ".php";
$fp = fopen($cacFile, "w");
if(false != $fp){
fwrite($fp, "<?phpn$cacValue = " . var_export($result, true) . "n?>");
fclose($fp);
return true;
}
return false;
}
function refreshCache(){
$cacDir = "cache";
$now = time();
$refreshStatus = false;
@include($cacDir . "/cfg.php");
if(isset($cacheConfig)){
foreach($cacheConfig as $i => $cache){
if(($cache["rtime"] + $cache["ttl"]) < $now){
unlink($cacDir . "/" . $cache["file"] . ".php");
$cacheConfig[$i]["rtime"] = $now;
$refreshStatus = true;
}
}
if($refreshStatus){
if($fp = fopen($cacDir . "/cfg.php", "w")){
fwrite($fp, "<?phpn$cacheConfig = " . var_export($cacheConfig, true) . "n?>");
fclose($fp);
}
}
}
}