|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。静态|网页 作者:iwind
本来在dev-club宣布的一篇文章,将怎样用模板处置法式PHPlib 中的template.inc完成静态网页的生成,呵呵,竟然被列入精髓,并被多个网站转载,想来这是侥幸。其实网上这方面的器材良多了,我上此宣布的所谓IAMS( iwind 文章办理体系),外面也有,有心人可以看一下。上面我只是扼要在总结一次。
如今普通说生成静态网页的办法有三种,一个是设置装备摆设办事器,人人可以到http://www.devarticles.com/c/b/PHP/ 去找找看,关于这个良多中央都有的。别的一个是用ob_函数掌握输入。办法以下:先用ob_start();翻开输入缓冲器,然后是对数据的剖析,操作等等,随着用ob_get_contents();获得缓冲区的内容,然后再写入文件。依据这个步调,可以写出以下法式:
<?php
ob_start();
//主体局部,数据操作,处置,输入等等。。。
require”global.php”;
mysql_connect(“localhost”,”root”,””);
…..
//获得缓冲区内容
$contents=ob_get_contents();
//假如不想输入任何器材,可以加上这句
ob_end_clean();
//写入目标文件
$fp=@fopen($targetFile,”w+”) or die(“翻开文件时失足”);
fwrite($fp,$contents);
?>
如许就把这个静态页面的内容写入了静态页面,$targetFile.像有的网站首页内容良多,要挪用n多个查询语句时,无妨准时生成静态网页,既大幅进步了会见速度,也加重了办事器承当。
你可以看出来,我用ob_只是处置单个页面,关于批量写入或更新多个页面,这个办法就不可了。这就是我要讲的第三种办法,用模板。模板是个好东东,如今人人都或多或少在用它,建议还不会复杂模板处置的网友,花点工夫去学它,普通的模板处置法式都很复杂的。用模板完成静态网页的生成长短常复杂的,办法就是获得剖析了局,把剖析了局写入文件。上面就以PHPlib中的template.inc来谈谈假如用模板生成静态网页。
一, 修正template.inc
到场以下的几个函数:
//将剖析了局保留到文件中去
function savetofile ($dir,$varname){
$data=$this->finish($this->get_var($varname));
$fp=fopen($dir,"w+");
fwrite($fp,$data);
}
//排除已赋值数组
function renew(){
$this->varkeys=array();
$this->varvals=array();
$this->file=array();
}
第一个函数是了局保留到静态文件中,第二个是把一切的模板剖析变量都置为空,以避免批量处置时互相影响。
二,完成静态网页生成。
<?php
$itpl->set_file(“main”,”mian.tpl”);
//剖析模板变量
…..
//剖析mainmains
$tpl->parse("mains","main");
//把剖析了局mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//相当主要
?>
呵呵,是否是很复杂,main.html就是咱们要的内容。上面是一个联合数据库的例子,并用函数封装了起来。
<?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.csdn.com.cn 有上千篇文章了,只占用了20M空间。反过去说,假如你有10000篇文章的话,你不会小气到只买200M的空间吧?
也许你对生成静态的文章列表感应猜疑,其实办法是一样的,就是 盘算页码 剖析每一个页码的内容 写入文件。 剖析每一个页码的内容,固然是写个函数咯,假如你一页一页的生成,生怕被人冷笑 ^_^。
静态网页不单单是可以加重办事器承当,进步会见速度,也能够便利地做镜像网站,便利地备份,削减被进击丧失水平,加速复原速度。固然静态网页也会给人人带来诸多方便的中央,你需求在静态和静态之间做出均衡,也能够在静态网页中到场js挪用的php代码,来到达计数,即时更新等目标。(完)
建议大家买一本书,而不光是在网上看一些零碎的资料,一本书毕竟会讲的系统一些,全面一些,而且印刷的书不受电脑的限制,但是建议在看书的时候最好旁边有电脑,这样可以很及时地上机实践。 |
|