通用PHP动态生成静态HTML网页的代码


Posted in PHP onMarch 04, 2010

我们知道,PHP读取MYSQL动态显示,在访问量大的情况下,会有很多性能问题,如果租用别人的虚拟主机,则会因为CPU消耗过多而被限制CPU,导致网页无法访问。我这里给出一个PHP动态生成HTML的方法,可以极大降低服务器CPU负荷。

首先设置.htaccess文件,将动态调用的参数转换为静态的HTML的URL地址,例如将在post目录下的文件,转发到根目录的wp-post.php文件中,加入的语句类似:

RewriteRule ^post/([a-z0-9\-]+\.html)$ wp-post.php?$1$2

然后修改wp-post.php文件,在文件的开头加入以下PHP代码:

ob_start(); 
$qstring = isset($_SERVER[%26quot;QUERY_STRING%26quot;]) ? $_SERVER[%26quot;QUERY_STRING%26quot;] : %26quot;%26quot;; 
define(%26quot;HTML_FILE%26quot;, $_SERVER['DOCUMENT_ROOT'].%26quot;/post/%26quot;.$qstring); if (file_exists(HTML_FILE)) 
{ 
$lcft = filemtime(HTML_FILE); 
if (($lcft + 3600) %26gt; time()) //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容 
{ 
echo(file_get_contents(HTML_FILE)); 
exit(0); 
} 
}

之后是现有的PHP的代码,然后在当前代码的最后面加上如下的PHP代码:

define(%26quot;HTMLMETA%26quot;,%26quot;%26lt;!-- this is a real static html file created at %26quot;.date(%26quot;Y-m-d H:i:s%26quot;).%26quot; --%26gt;%26quot;); 
$buffer = ob_get_flush(); 
$fp = fopen(HTML_FILE, %26quot;w%26quot;); 
if ($fp) 
{ 
fwrite($fp, $buffer.HTMLMETA); 
fclose($fp); 
}

好了,然后查看你的静态HTML页面,如果页面尾部出现了注释行,说明已经成功的创建了静态HTML文件。

这个方法的一个应用就是我先前写的那个%26ldquo;WordPress年度博客统计插件%26rdquo;,这个统计插件由于查询十多次数据库,很多人访问的时候会有很大性能问题,使用我介绍的这种动态生成HTML技术后,一天就查询一次,生成一次统计排行,完美解决了查询数据库的性能问题。

PHP 相关文章推荐
一个php作的文本留言本的例子(一)
Oct 09 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
PHP执行普通shell命令流程解析
Aug 24 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 #PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 #PHP
PHP 引用文件技巧
Mar 02 #PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 #PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 #PHP
PHP clearstatcache()函数详解
Mar 02 #PHP
PHP strtok()函数的优点分析
Mar 02 #PHP
You might like
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
Python实现登录接口的示例代码
2017/07/21 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python把转列表为集合的方法
2019/06/28 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
Python list与NumPy array 区分详解
2019/11/06 Python
基于python检查矩阵计算结果
2020/05/21 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
行政专员工作职责
2013/12/22 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
学校清明节活动总结
2014/07/04 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014年行政工作总结
2014/11/19 职场文书
导游词之珠海轮廓
2019/10/25 职场文书