通用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类
Nov 27 PHP
简单的php 验证图片生成函数
May 21 PHP
php 空格,换行,跳格使用说明
Dec 18 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
php实现的zip文件内容比较类
Sep 24 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 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获取服务器端信息的方法
2014/11/28 PHP
ext 代码生成器
2009/08/07 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Python3.6简单反射操作示例
2018/06/14 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
打架检讨书100字
2014/01/19 职场文书
先进集体获奖感言
2014/02/13 职场文书
环卫工人节活动总结
2014/08/29 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
导游词书写之黄山
2019/08/06 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书