通用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 相关文章推荐
example2.php
Oct 09 PHP
function.inc.php超越php
Dec 09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
关于php fread()使用技巧
Jan 22 PHP
php生成随机密码的三种方法小结
Sep 04 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
Yii2框架数据验证操作实例详解
May 02 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
python快排算法详解
2019/03/04 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
Python自动化操作实现图例绘制
2020/07/09 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python中round函数保留两位小数的方法
2020/12/04 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
春季防火方案
2014/05/10 职场文书
学校校庆演讲稿
2014/05/22 职场文书
车辆转让协议书
2014/09/24 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
管理失职检讨书
2015/05/05 职场文书
安全生产感想
2015/08/07 职场文书