通用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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
php基础知识:类与对象(1)
Dec 13 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
php简单判断文本编码的方法
Jul 30 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
smarty模板数学运算示例
Dec 11 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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采集腾讯微博的实现代码
2012/01/19 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
jQuery轮播图实例详解
2018/08/15 jQuery
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python实现井字棋游戏
2020/03/30 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
python Celery定时任务的示例
2018/03/13 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
pandas 将索引值相加的方法
2018/11/15 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
土建工程师岗位职责
2014/06/10 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
五四青年节活动总结
2015/02/10 职场文书
特岗教师个人总结
2015/02/10 职场文书
研究生个人学年总结
2015/02/14 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技