通用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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
php获取后台Job管理的实现代码
Jun 10 PHP
PHP源码之explode使用说明
Aug 05 PHP
php ajax 静态分页过程形式
Sep 02 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
javascript arguments使用示例
2014/12/16 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
JS中的eval 为什么加括号
2016/04/13 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
struct与class的区别
2014/02/03 面试题
文员个人的求职信范文
2013/09/26 职场文书
小学毕业寄语大全
2014/04/03 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
加入学生会演讲稿
2014/04/24 职场文书
高中学生期末评语
2014/04/25 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
世界红十字日活动总结
2015/02/10 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
深入理解go slice结构
2021/09/15 Golang
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA