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进行配置
黄色区域是设置匹配规则的,在返回伪静态的时候刚好指定的路径的文件里面有个和这个伪静态相同路径的和相同名称的文件的时候,是执行这个伪静态的文件呢?还是 执行这个本身就存在的静态文件,这个时候如果开启上面的两行蓝颜色的设置时只会返回这个事实存在的静态文件,否则反问伪静态路径的文件。
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进行配置
黄色区域是设置匹配规则的,在返回伪静态的时候刚好指定的路径的文件里面有个和这个伪静态相同路径的和相同名称的文件的时候,是执行这个伪静态的文件呢?还是 执行这个本身就存在的静态文件,这个时候如果开启上面的两行蓝颜色的设置时只会返回这个事实存在的静态文件,否则反问伪静态路径的文件。
相关文章推荐
- PHP中超全局变量$GLOBALS和global的区别
- PHP实现对png图像进行缩放的方法(支持透明背景)
- ajax+php控制所有后台函数调用
- php项目中百度 UEditor 简单安装调试和调用
- PHP高手总结10条开发建议优化
- PHP实现Word与excel等转换pdf方法
- php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
- php项目如何自定义404页面
- laravel5.0 view层 解决本地服务器和远程服务器网站路径问题
- php-001-win7 环境下 wamp 的至简部署
- laravel5.0 view层页面之间的跳转流程[通过route路由控制]
- OLAP、OLTP的介绍和比较
- 安装PHP缺少模块报错的解决办法
- yii2的gradview点击按钮通过get方法传参给数据库
- 读《PHP和MySQL Web开发》
- Php基础字符串篇
- CI去掉index.php
- Mac下安装使用phpMyAdmin. Set up phpMyAdmin on MacOSX
- 解决PHP下json_decode返回NULL的问题。
- ThinkPhp框架基础知识