用php生成静态html页面 因为每次用户点击动态链接的时候都会对服务器发送数据查询的要求

对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担

所以把动态数据转换成静态html页面就成了节省人力物力的首选

因为此前没有相应的经验 刚开始的时候觉得这个技术很神秘

但在看了一些例子以后发现并不是那么复杂(不过网上的资料并不是特别详细)

经过一个上午加中下午的试验 终于把该做的任务完成了 下面是一些心得和一个简单的例子

希望大虾们不要笑话

一般来说 用php转换输出html页面有两种办法 引用大虾的文章如下:

第一种:利用模板。目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。它们每一种模板,都有一个获取输出内容的函数。我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。

这里我用smarty做例子,说明如何生成静态页:

assign("title","Hello World!"); $content = $t->fetch("templates/index.htm"); //这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了 $fp = fopen("archives/2005/05/19/0001.html", "w"); fwrite($fp, $content); fclose($fp); ?>

第二种方法:利用ob系列的函数。这里用到的函数主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打开浏览器缓冲区的意思,打开缓冲后,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区,直到你使用了ob_end_flush().而这里最重要的一个函数,就是ob_get_contents(),这个函数的作用是获取缓冲区的内容,相当于上面的那个fetch(),道理一样的。

我选用的第2种方法 也就是用ob系列的函数

我刚开始看这个的时候有点不太明白 后来才知道ob是output buffering的意思 也就是输出缓存

当你准备输出的时候 所有的数据都保存在ob里面 服务器解析完php以后 把所有要输出到客户端的html代码都存放在ob里面 如果我们要输出html静态页面 只要把缓存取出来写入一个html页面即可

所以原理其实是很简单的

这里用到了几个函数 由于我初学php 很多函数我还不了解 所以这里也说明一下 希望可以帮助大家

ob_start():开始“捕捉”缓存 也就是从这里开始 打开浏览器的缓存

ob_end_flush():关闭浏览器缓存

ob_get_content():读取缓存内容

fopen(”文件路径”,”打开模式”)打开文件 这个函数的打开模式有好几种 下面介绍几种主要的模式:

“r” 只读方式打开,将文件指针指向文件头。

“r+” 读写方式打开,将文件指针指向文件头。

“w” 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

“w+” 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

fwrite(”文件名称”,”写入内容”) 写入文件

fclose() 关闭文件

由于我要转换的html文件非常多 可能有几百个 所以这里不能静态指定fopen的路径 大家可以设置一个路径变量 里面可以保存用户传来的id等信息 方便进行html文件命名 下面是我结合上次php读取xml数据的一个简单例子

"; if($name) echo $xml_data."

"; } function endElement($parser_instance, $element_name) //结束标签事件的函数 { global $name,$position; $name=false; $position=false; } //xml数据读取完毕 $htmlname=$id.".html";//$id可以自己定义 这里代表用户传来的id $htmlpath="archives/".$htmlname; //设置路径变量 $content = ob_get_contents();//取得php页面输出的全部内容 $fp = fopen($htmlpath, "w"); fwrite($fp, $content); fclose($fp); ?>

Related posts:

一个用PHP读取XML数据的简单例子 今天工作上碰到一个问题 由于我们的项目数据太少 所以需要从web search那边借调数据 他们只给我们提供了一个xml的接口 因此我们需要把xml的数据转化成html呈现给大家 由于项目是基于php的 所以就摒弃了用js来读取xml选择了继续使用php 不过我以前从来没有做过此类的尝试 所以找了很多网上资料... 用php实现文件安全下载 最近在研究php实现文件下载的问题,按道理来说,一般的文件下载很简单,建立一个链接指向到目标文件就可以了,但是这样就直接暴露了文件所在路径,给盗链者打开了大门,并且可能会有安全隐患,一般来说,要实现安全的文件下载,在php下一般是利用header和fread这么来做的: 第一步 假设你要下载的是一个torrent的文件,那么先建立一个动态php文件,用户点击下载文件的时候直接链接到这个php并传回与文件位置相关的参数以帮助这个php能从数据库中取出文件所在的真实位置;这样做的另外一个好处是,可以通过这个php来对下载进行统计计数;这个过程并不难,所以就不写代码了,主要是对数据库的查询,假设文件的真实位置是$fileAdd,文件名为$fileName; 第二步 得到文件所在的真实位置以后,有人会用header的location直接重定向到这个文件,但是这样仍然是不安全的,因为某些下载软件还是可以通过重定向分析获得你的文件位置信息,因此需要用另外一种方法,就是php的文件处理API函数,这里主要是运用fread函数把文件直接吐给浏览器,让浏览器提示用户下载,所有的这些处理都是在服务器端完成的,因此用户是不会知道文件具体位置信息的,具体代码如下: Header("content-type:application/octet-stream"); Header("content-disposition:attatchment;filename:".$fileName.".torrent"); if(file_exists($fileAdd) && $file=fopen($fileAdd,"r"))//判断文件是否存在并打开... PHP优秀的文件访问功能 这些天和php的亲密接触让我越来越喜欢这个语言OS的语言就是好 很多人为它写函数 综合起大家的力量这样的语言是最有发展前途的今天和大家介绍一下php的文件访问功能: php的文件访问功能非常强大,当然强大并不意味着难,在互联网这个领域,越强大代表越简单,因为很好用。在php里面,涉及到file访问的函数有file()、fopen()、readfile()和get_file_content()等等。这里跟大家介绍最简单实用的file()函数,其他的函数运用其实都差不多,大家可以去查php手册。 下面是php手册当中对file()函数的简单介绍: 引用内容 file (PHP 3, PHP... 分享一个php遍历目录的函数 工作上有需要,自己写了一个,代码如下: function outputDirFile($dir) { if ($handle = opendir($dir)) { while (false... thebeststuff图集的生成方法 之前发表的一个文章引发了一些很激烈的讨论,事实上大家误解了我的意思,我最想知道的是它的生成流程,而不是具体技术细节,但是不管如何,在这里谢谢各位热心留言的朋友了,这个周末在家我利用空暇时间把自己的一些想法用php表达了出来,初步成功地实现了这种效果,现在放上来和大家分享,下面是我利用GD随机挑选位置生成的图片: 要解决这个问题的关键在于图片位置的选择,具体来说分为两步: 1. 随机选择一个位置(x、y坐标); 2. 根据图片的宽度、高度以及x、y坐标判断此位置是否可以放图; 第一个步骤很好做,先用GD生成一张空白图片(比如300*100),然后在空白图中随机选一个坐标用来放置读入的新图片即可; 第二步稍微复杂一点,因为要判断之前的坐标是否能够放置新图片,这里需要对之前已经有图片的位置做一个信息保存,以方便去逐一对比,我在这里使用了一个二维数组来保存之前图片的位置信息,类似于数据库中的一组数据,第一维是图片,第二维是图片坐标信息,包括x1、y1、x2、y2四个组成部分;有了这个数组,我们就可以在程序中循环判断哪个区域对于当前图片来说是可用的,然后递归调用GD的图片copy生成函数就可以了。 下面是我的php代码: 下载:...

php页面怎么转换成静态页面,php如何生成静态页面相关推荐

  1. html手机pc不同页面,PC端和手机端如何同时生成静态页

    静态页是和图片类似的静态资源,访问静态资源不会经过程序处理,不会根据浏览器返回不同页面.要同时支持PC端和手机端浏览器,且要生成静态页时,最好使用bootstrap之类的技术,实现自适应页面设计. 如 ...

  2. html怎么转换成ftl模板,FreeMarker入门+模板静态化+模板字符串静态化

    只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件) 数据模型:数据模型在java中可以是基本类型也可以List.Map.Pojo等复杂类型 模板 输出 ...

  3. python日期格式转换成13位时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例...

    我就废话不多说了,直接上代码吧! import datetime import time def get_float_time_stamp(): datetime_now = datetime.dat ...

  4. php建站静态,php网站如何生成静态

    静态页面加载速度快(什么是静态页面),利于搜索引擎蜘蛛抓取,所以很多朋友都想把动态页面生成静态页面,那么今天就来介绍下如何用php生成静态网页. 相关推荐:<php入门教程> 思路大致是这 ...

  5. php 织梦wap源码,织梦手机静态页生成插件 DEDE WAP静态化 手机端生成静态

    织梦手机静态页生成插件 织梦手机端本身默认没有静态,很多客户都想做手机端静态,这次你们有福了, 织梦手机静态页生成插件是一个安装后,可以生成手机版静态页,提高手机版网页的访问速度,更加有利于SEO. ...

  6. 一键静态化【一键生成静态网页】

    项目首页 HTML页  需要全屏轮播展示,要求通过管理平台能够选择展示的图片.开始时使用 Ajax 获取数据库表中图片地址展示,结果只能轮播一次无法循环轮播,最后通过一键静态化实现此功能  一,案例展 ...

  7. ios 静态库合成_iOS生成静态库方法-iOS集成静态库-iOS合并静态库

    在iOS的开发过程中,我们常常用到第三方的库.尤其是QQ.百度地图.广告等. 那么,如何制作自己的库文件呢? 如果,将自己写的功能类编译成库文件,分发给其他人来使用呢? 静态库的优点 编译静态库的好处 ...

  8. mvc分页生成静态页,mvc生成静态页

    http://blog.csdn.net/xxj_jing/article/details/7899125 分页生成静态页 http://www.cnblogs.com/luanyilin/archi ...

  9. Date类型数据前台页面展示转换成yyyy-MM-dd hh:mm:ss

    javaBean里面的数据类型与数据库相对应,但我在ajax请求获取数据的时候,前台展示成这个样子 这是long类型的数据格式,这时候就需要将此date数据进行格式转换,在js写了函数用于将date数 ...

最新文章

  1. 我靠这份无人机完全指南吹了一整年牛!
  2. SkyWalking Liunx 环境搭建NetCore接入
  3. Hibernate @JoinTable 注解
  4. Cross-Scale Cost Aggregation for Stereo Matching
  5. 运动后肌肉酸痛怎么办?
  6. [原创]一篇无关技术的小日记(仅作暂存)
  7. android获取进程名,android – 按包名查找正在运行的进程ID
  8. RS-485串口通讯测试及四路集线器功能探究
  9. 问题记录1:网络和共享中心打不开的解决办法
  10. RS485远程无线模块
  11. pika在codis中的探索
  12. 平板电脑触摸屏市场现状及未来发展趋势
  13. Python计算思维训练——数组和曲线绘制练习(三)
  14. Maven异常:0.0.1-SNAPSHOT: Could not find artifact
  15. 深度学习方法(十五):知识蒸馏(Distilling the Knowledge in a Neural Network),在线蒸馏
  16. Python Spider 的总结
  17. Hadoop系统中的单点故障解决方案总结
  18. 简单聊一聊UseCompressedOops UseCompressedClassPointers这两个JVM参数
  19. 《101 Windows Phone 7 Apps》读书笔记-BABY NAME ELIMINATOR
  20. 已经两点求直线方程(多维空间)

热门文章

  1. 修改手机服务器密码是不是获取不了通讯录,手机运营商服务密码改了,别人还会读取到通讯录吗...
  2. 在Python中将Firefox扩展与Selenium结合使用
  3. flask:SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default i
  4. kotlin lateinit
  5. 神舟电脑为什么这么便宜
  6. CMake中使用vcpkg
  7. Java实现数据库jdbc连接测试
  8. 交换机芯片笔记1.2
  9. 计算机桌面应用程序打不开怎么办,电脑软件全部打不开怎么办
  10. 菜鸟学习JSP之第6章-servlet