欢迎来到 - 九九学习库 - http://www.99xxk.com !
您的位置: 九九学习库学习教育电脑学习编程入门PHP教程浅谈PHP生成静态页的两种方法 -- 正文

浅谈PHP生成静态页的两种方法

[04-05 16:40:44]   来源:http://www.99xxk.com  PHP教程   阅读:92212

概要:态页面的:我们用函数来实现吧![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);
}
}
}
}



上一页  [1] [2] 


标签:PHP教程PHP技巧大全,php培训大全,php学习大全电脑学习 - 编程入门 - PHP教程

《浅谈PHP生成静态页的两种方法》相关文章