PHP教程之谈PHP生成静态页面
我先把我自己学习PHP的过程做一下概括: 1、引 言在速度上,静态页面要比静态页面的例如php快良多,这是毫无疑问的,然而因为静态页面的天真性较差,假如不借助数据库或其他的装备保留相干信息的话,全体的办理上对照繁琐,例如修正编纂.例如浏览权限限制等,然而,对应一些咱们常常一再利用的文件,例如说,开辟的旧事宣布体系,咱们不但愿良多用户都读取数据库才显示了局,如许一方面损耗了办事器的资本,另外一方面占去了阅读者大批宝贵的呼应工夫,一切,有了"静态页面话"的做法,以后良多网站都采取这类手艺,普通都是由办理后台掌握,或生成html直接显示,或xhtml用css掌握显示,或生成xml用xslt显示,这些手艺都不是难的,在这里我就浅易的说说生成html的办法.
2、准备常识
模板手艺:
模板引擎Smarty深切浅出引见--2005-12-31
笑谈设置装备摆设,利用Smarty手艺 --2006-01-04
缓存手艺:
有些信息例如常常不变的,然而仍是能变的信息放在缓存中以加速显示速度,这是很有价值的,所谓的缓存,浅显的了解就是一些保留在办事器真个共用信息.它是于办事器同存亡的,咱们在保留缓存的时分可以指定下次更新的工夫的判别,例如要在5分钟更新一次,可以纪录前次更新的工夫,和以后工夫对照,假如大于 5 分钟 ,读取数据库,更新换成,不然直接读取缓存数据,固然,缓存需求客户端用户激活的,只需一次.
ob_start()函数:翻开输入缓冲区.
函数格局 void ob_start(void)
申明:当缓冲区激活时,一切来自PHP法式的非文件头信息均不会发送,而是保留在外部缓冲区。为了输入缓冲区的内容,可使用ob_end_flush()或flush()输入缓冲区的内容。
Flush:刷新缓冲区的内容,输入。
函数格局:flush()
申明:这个函数常常利用,效力很高。
ob_get_contents :前往外部缓冲区的内容。
函数格局:string ob_get_contents(void)
申明:这个函数会前往以后缓冲区中的内容,假如输入缓冲区没有激活,则前往 FALSE.
ob_get_length:前往外部缓冲区的长度。
函数格局:int ob_get_length(void)
申明:这个函数会前往以后缓冲区中的长度;和ob_get_contents一样,假如输入缓冲区没有激活,则前往 FALSE.
ob_end_clean:删除外部缓冲区的内容,而且封闭外部缓冲区
函数格局:void ob_end_clean(void)
申明:这个函数不会输入外部缓冲区的内容而是把它删除
ob_end_flush:发送外部缓冲区的内容到阅读器,而且封闭输入缓冲区
函数格局:void ob_end_flush(void)
申明:这个函数发送输入缓冲区的内容(假如有的话)
ob_implicit_flush:翻开或封闭相对刷新
函数格局:void ob_implicit_flush ()
申明:默许为封闭缓冲区,翻开相对输入后,每一个剧本输入都直接发送到阅读器,不再需求挪用 flush()
文件写入:
int fwrite ( resource handle, string string [, int length] )
fwrite() 把 string 的内容写入 文件指针 handle 处。 假如指定了 length,当写入了 length 个字节或写完了 string 今后,写入就会中断,视乎先碰着哪一种情形。
fwrite() 前往写入的字符数,呈现毛病时则前往 FALSE 。
相干参考官方网站: 文件参考
3、处理计划
思绪:开启 ob_start缓冲,当已调出数据的时分获得 ob_get_contents,然后生成静态页,ob_end_clean排除缓冲.ok,就这么来,来看一个例子(php+mysql的联合):
创立数据库:
CREATE TABLE `bihtml` (
`id` int(11) NOT NULL auto_increment,
`szdtitle` varchar(16) NOT NULL,
`szdcontent` text NOT NULL,
PRIMARY KEY(`id`)
) TYPE=MyISAM;
获得以后的ID,并导入模板:
<P>
<P>ob_start();
$id=_POST['id']
if(!isset($id)&&is_integer($id))
{
@$db=new mysqli('localhost','root','admin','bihtml');
$result=$db->fetch_one_array("select* from szd_bi where id='$id'");
if(!empty($result))
{
$tmp->assign(array(
"Szdtitle",htmlspecialchars($result['titles']),
"Szdcontent",$result['titles']));
}
$tpl->display('default_1.tpl');
$this_my_f= ob_get_contents(); //此处关头
ob_end_clean();
$filename = "$id.html";
if(tohtmlfile_cjjer($filename,$this_my_f))
echo "生成胜利 $filename";
else
echo "生成辨认";
}
}
//把生成文件的进程写出函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if (is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name);
}
$cjjer_handle = fopen ($file_cjjer_name,"w");
if (!is_writable ($file_cjjer_name)){
return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
}
fclose ($cjjer_handle); //封闭指针
return $file_cjjer_name;
}
4、申明事项
1: 普通建议办理员添加数据的时分就生成静态页面,可以思索纪录生成的文件名次和途径.
2: php次要是 ob_starts()和 ob_get_contents,生成静态页面的时分很有效,固然也能够思索调出数据库直代替换模板外面的变量也是可以的.
3: 次要的模板利用smarty,phplib都是可以的,smarty利用对照简略单纯.
给你的建议是,有些最常用的语句是需要记住的 比如if for while这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 当然这种网站的会员费就几十块钱。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
页:
[1]