通用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 foreach 参数强制类型转换的问题
Dec 10 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
php设计模式 Command(命令模式)
Jun 26 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
Laravel框架学习笔记(一)环境搭建
Oct 15 PHP
php+mysql数据库查询实例
Jan 21 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
php注册审核重点解析(数据访问)
May 23 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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更新mysql后获取改变行数的方法
2014/12/25 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
动手学习无线电
2021/03/10 无线电
一个基于jquery的文本框记数器
2012/09/19 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
js倒计时抢购实例
2015/12/20 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
农村婚礼证婚词
2014/01/10 职场文书
《雨点》教学反思
2014/02/12 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
法人身份证明书
2015/06/18 职场文书
个人更名证明
2015/06/23 职场文书
公司酒会主持词
2015/07/02 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
七年级作文之雪景
2019/11/18 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏