|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我先把我自己学习PHP的过程做一下概括: 1、引 言
在速度上,静态页面要比静态页面的例如php快良多,这是毫无疑问的,然而因为静态页面的天真性较差,假如不借助数据库或其他的装备保留相干信息的话,全体的办理上对照繁琐,例如修正编纂.例如浏览权限限制等,然而,对应一些咱们常常一再利用的文件,例如说,开辟的旧事宣布体系,咱们不但愿良多用户都读取数据库才显示了局,如许一方面损耗了办事器的资本,另外一方面占去了阅读者大批宝贵的呼应工夫,一切,有了"静态页面话"的做法,以后良多网站都采取这类手艺,普通都是由办理后台掌握,或生成html直接显示,或xhtml用CSS掌握显示,或生成xml用xslt显示,这些手艺都不是难的,在这里我就浅易的说说生成html的办法.
2、准备常识
模板手艺:
[PHP] 模板引擎Smarty深切浅出引见 --2005-12-31
[PHP] 笑谈设置装备摆设,利用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 ([int flag])
申明:默许为封闭缓冲区,翻开相对输入后,每一个剧本输入都直接发送到阅读器,不再需求挪用 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这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。 |
|