通用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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
PHP 一个随机字符串生成代码
May 26 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
Jan 14 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
php7函数,声明,返回值等新特性介绍
May 25 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
php的memcached客户端memcached
2011/06/14 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
学习python (2)
2006/10/31 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
python生成n个元素的全组合方法
2018/11/13 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Django Celery异步任务队列的实现
2019/07/24 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
函授毕业生的自我鉴定
2013/11/26 职场文书
学校消防安全制度
2014/01/30 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
会计出纳岗位职责
2015/03/31 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
MySQL数据库简介与基本操作
2022/05/30 MySQL
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库