通用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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
php通过session防url攻击方法
Dec 10 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
PHP代码覆盖率统计详解
Jul 22 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
用Socket发送电子邮件
2006/10/09 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue2.0 路由模式mode="history"的作用
2018/10/18 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
python使用mysql数据库示例代码
2017/05/21 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python音频处理的示例详解
2020/12/23 Python
英语专业学生个人求职信
2014/01/28 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
Go语言基础知识点介绍
2021/07/04 Golang
Python中22个万用公式的小结
2021/07/21 Python
python获取字符串中的email
2022/03/31 Python