通用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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
解析php如何将日志写进syslog
Jun 28 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
php微信公众号开发之简答题
Oct 20 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 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
PHP提取中文首字母
2008/04/09 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
node.js基础知识小结
2018/02/26 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python求列表交集的方法汇总
2014/11/10 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python生成圆形图片的方法
2020/03/25 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
房产协议书范本2014
2014/09/30 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
导游词之桂林山水
2019/09/20 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS