代码如下:
- // 在你的开始处加入 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);
下面是一些用到的函数的介绍:
1Flush: 刷新缓冲区的内容, 输出
函数格式: flush()
说明: 这个函数经常使用, 效率很高
2ob_start : 打开输出缓冲区
函数格式: void ob_start(void)
说明: 当缓冲区激活时, 所有来自 PHP 程序的非文件头信息均不会发送, 而是保存在内部缓冲区为了输出缓冲区的内容, 可以使用 ob_end_flush() 或 flush() 输出缓冲区的内容
3 ob_get_contents : 返回内部缓冲区的内容
使用方法: string ob_get_contents(void)
说明: 这个函数会返回当前缓冲区中的内容, 如果输出缓冲区没有激活, 则返回 FALSE
4ob_get_length: 返回内部缓冲区的长度
使用方法: int ob_get_length(void)
说明: 这个函数会返回当前缓冲区中的长度; 和 ob_get_contents 一样, 如果输出缓冲区没有激活则返回 FALSE
5ob_end_flush : 发送内部缓冲区的内容到浏览器, 并且关闭输出缓冲区
使用方法: void ob_end_flush(void)
说明: 这个函数发送输出缓冲区的内容 (如果有的话)
6ob_end_clean: 删除内部缓冲区的内容, 并且关闭内部缓冲区
使用方法: void ob_end_clean(void)
说明: 这个函数不会输出内部缓冲区的内容而是把它删除!
7ob_implicit_flush: 打开或关闭绝对刷新
使用方法: void ob_implicit_flush ([int flag])
说明: 使用过 Perl 的人都知道 $|=x 的意义, 这个字符串可以打开 / 关闭缓冲区, 而 ob_implicit_flush 函数也和那个一样, 默认为关闭缓冲区, 打开绝对输出后, 每个脚本输出都直接发送到浏览器, 不再需要调用 flush().
来源: https://www.php1.cn/detail/php-061a7184f6.html