通用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初学者头疼问题总结
Oct 09 PHP
15个小时----从修改程序到自己些程序
Oct 09 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
php中几种常见安全设置详解
Apr 06 PHP
php中随机显示图片的函数代码
Jun 23 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
php函数与传递参数实例分析
Nov 15 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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 file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
js实现登录验证码
2016/12/22 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
Python 初始化多维数组代码
2008/09/06 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
python实战教程之自动扫雷
2018/07/13 Python
python实现AES加密和解密
2019/03/27 Python
在python里面运用多继承方法详解
2019/07/01 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
动物科学专业求职信
2014/07/27 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Github 使用python对copilot做些简单使用测试
2022/04/14 Python