利用PHP生成静态html页面的原理


Posted in PHP onSeptember 30, 2016

前言

如果每次用户点击动态链接的时候都会对服务器发送数据查询的要求,对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担,所以把动态数据转换成静态html页面就成了节省人力物力的首选因为此前没有相应的经验,所以这篇文章和大家分享利用PHP生成静态html页面的原理和方法,有需要的可以一起来看看。

一、思路分析

其实,实现静态页面生成功能的原理很简单,主要利用几个常见的PHP文件操作函数对文件进行操作,其思路流程如下:

利用PHP生成静态html页面的原理
生成静态页面流程图

二、功能实现

设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:

<?php
//将数据存入二维数组
$con=array(array('文章标题1','文章内容1'),array('文章标题2','文章内容2'),array('文章标题3','文章内容3'),array('文章标题4','文章内容4'),array('文章标题5','文章内容5'));

foreach($con as $id=>$val){ //循环生成
 $title=$val[0];
 $content=$val[1];
 $path="article-".($id+1).".html";

 //替换example内容,并获取内容赋值给$str
 $fp=fopen("example.html","r");
 $str=fread($fp,filesize("example.html"));
 $str=str_replace("{title}",$title,$str);
 $str=str_replace("{content}",$content,$str);
 fclose($fp);

 //新建空白文件,将$str写入
 $handle=fopen($path,"w");
 fwrite($handle,$str);
 fclose($handle);

 echo "生成".$path."<br/>";
}
?>
}

注解:

     fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;

     fread(文件名,读取字节数),读取文件内容及对应的字节数;

     str_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;

     fclose(文件名),关闭文件;

     fwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。

三、总结

原理比较简单,作为php初学者,要把每个基础知识扎实学好,你的PHP之路定会风光无限,以上就是这篇文章的全部内容了,希望能对各位PHP开发者们能有所帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
如何实现给定日期的若干天以后的日期
Oct 09 PHP
模仿OSO的论坛(二)
Oct 09 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
smarty 缓存控制前的页面静态化原理
Mar 15 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
thinkphp缓存技术详解
Dec 09 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
Yii2框架实现注册和登录教程
Sep 30 #PHP
php多线程并发实现方法
Sep 30 #PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 #PHP
分享PHP-pcntl 实现多进程代码
Sep 30 #PHP
PHP编写daemon process详解及实例代码
Sep 30 #PHP
PHP 极验验证码实例讲解
Sep 29 #PHP
php自定义函数转换html标签示例
Sep 29 #PHP
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
javascript中new关键字详解
2015/12/14 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
批处理与python代码混合编程的方法
2016/05/19 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
六个一活动实施方案
2014/03/21 职场文书
双拥工作宣传标语
2014/06/26 职场文书
2014教师研修学习体会
2014/07/08 职场文书
先进工作者推荐材料
2014/12/23 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android