1、buffer的概念:
buffer其实就是一个缓冲区,一个内存地址空间,主要用户存储数据区域。
在php输出语句的一个流程是:内容--php buffer---tcp---终端
开启php中的buffer:进入php.ini文件中开启“output_buffering = on”
例子:(获取缓冲区中的数据)
<?php
echo '获取缓冲区的数据;
//通过下面的函数获取缓冲区的数据
echo ob_get_contents();
?>
2、php如何实现页面静态化方法:
第一种:通过file_get_contents()函数
file_get_contents():将一个字符串写入到文件中。
file_get_contents(‘index.shtml’, '字符串数据');
第二种:使用php内置缓存机制实现页面静态化:output_buffering
所常用的几个函数:
ob_start : 打开输出控制缓冲(当php.ini文件中output_buffering关闭的时候可以直接用这个函数来开启)
ob_get_contents:返回输出缓冲区的内容
ob_clean:清空输出缓冲区的内容
ob_get_clean:得到当前缓冲区的内容,并删除当前输出缓冲区
3、实现纯静态化案例之步骤:
主要实际操作的一个步骤是:从数据库获取数据-----然后把获取到的数据填充到模板当中去(php动态页面)---然后把动态的页面转化成静态的页面生成一个纯静态文件。
案例分析:
<?php
dataarray:数据库所查出来数据(数组形式)
ob_start(); //开启缓冲区
//将数据库获取的数据填充到模板文件当中--然后将模板文件引入到当前页面当中执行
require_once('/index.php');
if(file_put_contents('index.shtml', ob_get_clean()))
{
echo 'success';
}else
echo 'error';
?>
上面的程序就会生成纯静态页面:index.shtml
4、如何触发系统生成纯静态化页面:
三种方式:
第一:页面添加缓存时间
if(is_file("./index.shtml") && (time()-filemtime("./index.shtml"))<500){require_once("./index.shtml")//小于5分钟情况下加载生成的静态文件}else{//反问动态的模板文件重新生成一个一个静态文件}
第二:手动触发方式
第三:crontab定时扫描程序(在linux系统中定时的更新程序)
crontab定时扫描程序(linux下的一个扫描工具):
例子:*/5****php /data/static/index.php
*/5****php:用星号分别代表五个时区:第一个星代表分,后面的星依次代表时、日、月、周,很显然现在代表每5分钟执行 后面路径下的PHP程序。
在linux下如何去设置上面这个命令呢?
首先切换到root用下输入crontab -e进去编辑 写入*/5****php /data/static/index.php
然后用tail -f /var/log/cron.log命令去查看程序执行一个日志(查看执行的过程)
5、局部动态化案例实现:
利用ajax技术来实现:
$.ajax({
'url' : '动态路径‘,
’type‘ : 'get/post', //传输方式
'dataType' : 'json', //返回的数据类型
’error‘ : function(){},
'success' : function(result)
{
html = ’‘;
//利用each函数进行遍历
$.each(result.data, fuction(key,value)
{
html+= ..........这里比如循环一个li
//然后找到或者设置将要放入某个区中的ID值
$("#a") . html(html);
});
}
})
6、php处理伪静态:
概率:将动态url的转化成类似于静态的url(其本质还是一个动态的地址)
作用:美观、利于收录数据等。
处理方法两种:
第一种:通过正则来匹配
首先在php中打印$_SERVER这个全局变量会看到一个PATH_INFO,这里面装的就是域名后面的地址了然后利用正则去匹配
preg_math("正则规则", $_SERVER['PATH_INFO']);