通用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学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
php日历[测试通过]
Mar 27 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php中的静态变量的基本用法
Mar 20 PHP
PHP远程采集图片详细教程
Jul 01 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
Laravel 自带的Auth验证登录方法
Sep 30 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
自动跳转中英文页面
2006/10/09 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
JS数学函数Exp使用说明
2012/08/09 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
Python 文件操作实现代码
2009/10/07 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python调用staf自动化框架的方法
2018/12/26 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
Python Web版语音合成实例详解
2019/07/16 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python如何转换字符串大小写
2020/06/04 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
护士感人事迹
2014/05/01 职场文书
新教师个人总结
2015/02/06 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
硕士论文致谢范文
2015/05/14 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫