PHP将整个网站生成HTML纯静态网页的方法总结


Posted in PHP onFebruary 05, 2012
<?php 
//在你的开始处加入 ob_start(); 
ob_start(); //以下是你的代码 
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中 
$temp = ob_get_contents(); 
ob_end_clean(); 
//写入文件 
$fp = fopen(‘文件名','w'); 
fwrite($fp,$temp) or die(‘写文件错误'); 
?>

这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML

下面是我用的方法:

if(file_exists(“xxx.html”)) 
{ 
$time = time(); //文件修改时间和现在时间相差半小时一下的话,直接导向html文件,否则重新生成html 
if($time - filemtime(“xxx.html”) < 30*60) 
{ 
header(“Location:xxx.html”); 
} 
} 
//在你的开始处加入 ob_start(); 
ob_start(); 
//页面的详细内容 
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中 
$temp = ob_get_contents(); 
ob_end_clean(); 
//写入文件 
$fp = fopen(‘xxx.html','w'); 
fwrite($fp,$temp) or die(‘写文件错误'); 
//重新导向 
header(“Location:xxx.html”);

下面是一些用到的函数的介绍:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush().

PHP 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
php文件缓存类用法实例分析
Apr 22 PHP
PHP里的单例类写法实例
Jun 25 PHP
php网页版聊天软件实现代码
Aug 12 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
php生成word并下载代码实例
Mar 15 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 #PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 #PHP
PHP测试程序运行时间的类
Feb 05 #PHP
PHP设计模式 注册表模式
Feb 05 #PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 #PHP
需要注意的几个PHP漏洞小结
Feb 05 #PHP
PHP的可变变量名的使用方法分享
Feb 05 #PHP
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
JavaScript与函数式编程解释
2007/04/27 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python从MP3文件获取id3的方法
2015/06/15 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python模拟事件触发机制详解
2018/01/19 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
python之消除前缀重命名的方法
2018/10/21 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python中封包建立过程实例
2021/02/18 Python
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
string = null 和string = ''的区别
2013/04/28 面试题
优秀员工自荐书
2013/12/19 职场文书
企业安全生产责任书
2014/04/14 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
服务员岗位职责
2015/02/03 职场文书