您的位置:首页 > 编程语言 > PHP开发

php实现页面静态相关知识点

2015-07-15 00:25 537 查看
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']);

第二种:通过配置Apache中的rewrite从而达到url的一个伪静态
找到配置中的httpd_vhosts.conf进行配置



黄色区域是设置匹配规则的,在返回伪静态的时候刚好指定的路径的文件里面有个和这个伪静态相同路径的和相同名称的文件的时候,是执行这个伪静态的文件呢?还是 执行这个本身就存在的静态文件,这个时候如果开启上面的两行蓝颜色的设置时只会返回这个事实存在的静态文件,否则反问伪静态路径的文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: