ob函数相关

1.下面我说说ob的基本作用:

1)防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。其实这样的用法少用为好,养成良好的代码习惯。
2)捕捉对一些不可获取的函数的输出,比如phpinfo()会输出一大堆的HTML,但是我们无法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。
3)对输出的内容进行处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
4)生成静态文件,其实就是捕捉整页的输出,然后存成文件。经常在生成HTML,或者整页缓存中使用。

  1. 静态化的实现方式

    利用ob系列的函数

      ob_start();  打开输出控制缓冲
      ob_get_contents();  返回输出缓冲区内容
      ob_clean();  清空输出缓冲区
      ob_end_flush();  冲刷出(送出)输出缓冲区内容并关闭缓冲
      ob_start();
      输出到页面的HTML代码....
       ......
       ob_get_contents();
       ob_end_flush();
       fopen()写入
    

3.利用ob系列的函数
可以判断文件的inode修改时间,判断是否过期
使用filectime函数

<?php

$id = $_GET['id'];
if (empty($id))  {
   $id = '';
}
$cache_name = md5(__FILE__). '-' .$id. '.html';
$cache_lifetime = 3600;
//filectime(__FILE__)> filectime($cache_name)  判断文件是否已经修改
if ( filectime(__FILE__)> filectime($cache_name) && file_exists($cache_name)  &&( filectime($cache_name) + $cache_lifetime > time()))  {
     include  $cache_name;
     exit;
}
ob_start();
?>
<b>This  is My  Script</b>
<?php
$content = ob_get_contents();
ob_end_flush();
$handle = fopen($cache_name, "w');
fwrite($handle, $content);
fclose($handle);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值