[
会员中心
] [
发布文章
][
发布软件
] [
中文繁體
]
文章
·
资料
电脑软件
手机软件
网站源码
电脑·手机·网络
学习
话题
娱乐
故事
文化·历史
国学典籍
法律法规
操作系统
网络
办公·文件
音频视频
图形图像
硬件·驱动程序
行业
教学学习
编程
游戏
安卓
苹果
鸿蒙
其他
ASP
ASP.NET
JSP
PHP
HTML
·
CSS
·
JavaScript
本 站 搜 索
文章
软件
[选项]
文章类别:
[全部]
电脑·手机·网络
话题
故事
文化·历史
娱乐
学习
法律·法规
国学典籍
搜索选项:
文章编号
文章标题
文章作者
文章来源
相关链接
关键字词
文章标签
文章内容
软件类别:
[全部]
操作系统
网络
办公·文件
音频视频
图形图像
行业
编程
教学学习
游戏
硬件·驱动程序
安卓系统
苹果系统
鸿蒙系统
其他系统
HTML·CSS·JavaScript
ASP
JSP
PHP
ASP.NET
搜索选项:
软件编号
软件名称
软件作者
软件来源
相关链接
关键字词
软件标签
软件简介
发 送 文 章
谈PHP生成静态页面
〖
评论()
〗〖
留言
〗〖
收藏
〗
收信地址
填写收信人的电子邮箱
邮件主题
填写邮件主题
邮件内容
谈PHP生成静态页面 作者:5do8 来自:蓝色理想 一、引言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了静态页面话的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直接显示,或者xhtml用css控制显示,或者生成xml用xslt显示,这些技术都不是难的,在这里我就浅显的说说生成html的方法. 二、预备知识 模板技术: [PHP]模板引擎Smarty深入浅出介绍--2005-12-31 [PHP]笑谈配置,使用Smarty技术--2006-01-04 缓存技术: 有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间的判断,比方要在5分钟更新一次,可以记录上次更新的时间,和当前时间比较,如果大于5分钟,读取数据库,更新换成,否则直接读取缓存数据,当然,缓存需要客户端用户激活的,只需一次. ob_start()函数:打开输出缓冲区. 函数格式voidob_start(void) 说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。 Flush:刷新缓冲区的内容,输出。 函数格式:flush() 说明:这个函数经常使用,效率很高。 ob_get_contents:返回内部缓冲区的内容。 函数格式:stringob_get_contents(void) 说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回FALSE. ob_get_length:返回内部缓冲区的长度。 函数格式:intob_get_length(void) 说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活,则返回FALSE. ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区 函数格式:voidob_end_clean(void) 说明:这个函数不会输出内部缓冲区的内容而是把它删除 ob_end_flush:发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区 函数格式:voidob_end_flush(void) 说明:这个函数发送输出缓冲区的内容(如果有的话) ob_implicit_flush:打开或关闭绝对刷新 函数格式:voidob_implicit_flush([intflag]) 说明:默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用flush() 文件写入: intfwrite(resourcehandle,stringstring[,intlength]) fwrite()把string的内容写入文件指针handle处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。 fwrite()返回写入的字符数,出现错误时则返回FALSE。 相关参考官方网站:文件参考 三、解决方案 思路:开启ob_start缓冲,当已经调出数据的时候获取ob_get_contents,然后生成静态页,ob_end_clean清除缓冲.ok,就这么来,来看一个例子(php+mysql的结合): 创建数据库: CREATETABLE`bihtml`( `id`int(11)NOTNULLauto_increment, `szdtitle`varchar(16)NOTNULL, `szdcontent`textNOTNULL, PRIMARYKEY(`id`) )TYPE=MyISAM; 获取当前的ID,并导入模板: ob_start(); $id=_POST[’id’] if(!isset($id)is_integer($id)) { @$db=newmysqli(’localhost’,’root’,’admin’,’bihtml’); $result=$db-fetch_one_array(select*fromszd_biwhereid=’$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生成识别; } } //把生成文件的过程写出函数 functiontohtmlfile_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)){ returnfalse; } if(!fwrite($cjjer_handle,$file_cjjer_content)){ returnfalse; } fclose($cjjer_handle);//关闭指针 return$file_cjjer_name; } 四、说明事项 1:一般建议管理员添加数据的时候就生成静态页面,可以考虑记录生成的文件名次和路径. 2:php主要是ob_starts()和ob_get_contents,生成静态页面的时候很有用,当然也可以考虑调出数据库直接替换模板里面的变量也是可以的. 3:主要的模板使用smarty,phplib都是可以的,smarty使用比较简易.
文章网址:
https://dangbai.cn/Article.asp?ID=10000993
填写邮件内容
发信地址
填写发信人的电子邮箱
邮件签名
填写邮件签名
验证码
填写验证码,单击刷新验证码
程序执行中,请稍候...
发送协议
·欢迎使用本站在线文章发送系统。
·不得使用本站在线发送邮件系统发送垃圾邮件、广告邮件。
·如果收信人地址或其服务器出现错误,可能无法成功发送。
·如果有什么问题,或者意见建议,请联系[
网站管理员
]。
当百网
本站使用【啊估文章软件站】网站系统
〖
网站管理员留言簿
〗