|
|
2#

楼主 |
发表于 2008-10-30 14:41:05
|
只看该作者

用libTemplate实现静态网页的生成
以下为引用的内容:
<?php
//$aid是数据库中的文章id,$table是表名称,$template是模板地址,$tpl是template.inc的一个实例
//每一个aid对应一个静态网页地址,都存在一个数据表中
//表的结构类似于 aid target title
// 1 a1.html ….
// 2 a2.html ….
// 3 a3.html ….
function staticInfo($aid){
global $table,$template,$tpl;
//查询数据库
$res=mysql_query(“select * from $table where aid=’$aid’”);
//取出数据
$array=mysql_fetch_array($res);
//读静态网页地址,标题。
$target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl->set_file(“main”,$template);
//把模板中的{title}变量换成$title
$itpl->set_var(“title”,$title”);
//分析整个模板
$itpl->set_var(“mains”,”main”);
//把mains写入文件
$tpl->savetofile($target,"mains");
//置空
$tpl->renew();
}
?>
这样我们就可以用函数staticInfo()把我们想要处理的任一篇文章都生成静态网页。表$target里也可以包含文章内容,作者,来源等等,方法是一样的。
三,更新静态网页
一篇文章加入数据库后,由于一些原因我们总要修改一些文章。这时候,只要把相应的静态网页重新生成一次即可。这是非常方便的,因为表中已经有了静态网页的目标地址target字段。
可以看出关键所在,一篇文章生成静态网页的关键所在就是$template(模板地址),$target(目标地址)。前者,我们可以先确定,后者可以由你随心所欲的为每篇文章设置一个地址。常用的有1,时间戳 2,时分秒 3,根据文章id。因为这些重复的机会会非常小的。
四,批量生成静态网页.
有了单个文章生成的静态网页的函数了,那么批量生成是非常简单的。就是获取所有的文章aid,然后套入函数即可。
以下为引用的内容:
<?php
//引用模板类
require”template.inc”;
//引入函数
require”functions.php”;
//一些变量的定义
$table=”art”;
$template=”template/info.tpl”;
$tpl=new Template(“.”);
//连接mysql,选择数据库
mysql_connect(“localhost”,”root’,””);
mysql_select_db(“article”);
//发送查询语句
$res=mysql_query(“select aid from $table”);
while($r=mysql_fetch_array($res)){
$aid=$r[“aid”];
//生成静态网页
staticInfo($aid);
}
//结束
echo”所有静态网页更新/生成成功”;
?>
上面就是完整的例子。我们做cms的流程可以如下:
1,记者发稿(把稿件内容放入数据库)
2,编辑审查(如果他认为可以发布,那么就可以把这些内容生成静态网页)
3,退回稿件(把生成的静态网页删除,把数据库中的内容删除)
然后,我们访问到的网站内容就都是静态的了。一个问题就是,这种方法会不会占用很多空间内?http://www.knowsky.com 有上千篇文章了,只占用了20M空间。反过来说,如果你有10000篇文章的话,你不会吝啬到只买200M的空间吧?
或许你对生成静态的文章列表感到困惑,其实方法是一样的,就是 计算页码? 分析每个页码的内容 ? 写入文件。 分析每个页码的内容,当然是写个函数咯,如果你一页一页的生成,恐怕被人嘲笑 ^_^。
静态网页不仅仅是可以减轻服务器负担,提高访问速度,也可以方便地做镜像网站,方便地备份,减少被攻击损失程度,加快还原速度。当然静态网页也会给大家带来诸多不便的地方,你需要在动态和静态之间做出平衡,也可以在静态网页中加入js调用的php代码,来达到计数,即时更新等目的。(完) |
|