仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2912|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:用libTemplate完成静态网页的生成

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:29:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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”);
//剖析模板变量
…..
//剖析mainmains
$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代码,来到达计数,即时更新等目标。(完)

  建议大家买一本书,而不光是在网上看一些零碎的资料,一本书毕竟会讲的系统一些,全面一些,而且印刷的书不受电脑的限制,但是建议在看书的时候最好旁边有电脑,这样可以很及时地上机实践。
海妖 该用户已被删除
沙发
发表于 2015-2-16 04:55:31 | 只看该作者
当然这种网站的会员费就几十块钱。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-16 04:55:31 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
透明 该用户已被删除
地板
发表于 2015-3-4 23:59:18 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
只想知道 该用户已被删除
5#
发表于 2015-3-11 21:32:58 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
小魔女 该用户已被删除
6#
发表于 2015-3-11 22:50:04 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
深爱那片海 该用户已被删除
7#
发表于 2015-3-15 22:04:53 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-17 00:09:04 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
再现理想 该用户已被删除
9#
发表于 2015-3-18 00:05:00 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
谁可相欹 该用户已被删除
10#
发表于 2015-3-20 12:25:15 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-21 15:07:45 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
爱飞 该用户已被删除
12#
发表于 2015-4-10 17:02:51 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
柔情似水 该用户已被删除
13#
发表于 2015-4-12 17:57:18 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
山那边是海 该用户已被删除
14#
发表于 2015-4-17 10:32:32 | 只看该作者
当然这种网站的会员费就几十块钱。
admin 该用户已被删除
15#
发表于 2015-4-21 06:39:29 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
老尸 该用户已被删除
16#
发表于 2015-4-25 07:49:55 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
愤怒的大鸟 该用户已被删除
17#
发表于 2015-5-2 04:50:42 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
灵魂腐蚀 该用户已被删除
18#
发表于 2015-5-10 22:02:56 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
冷月葬花魂 该用户已被删除
19#
发表于 2015-6-16 23:04:14 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
不帅 该用户已被删除
20#
发表于 2015-6-18 03:33:45 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 14:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表