ob 页面静态化常用函数

Posted xiaolimao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ob 页面静态化常用函数相关的知识,希望对你有一定的参考价值。

ob_start();   // 打开一个输出缓冲区,所有输出信息不直接发送到浏览器中,而是保存在输出缓存区里面。

ob_clean();               //删除内部缓冲区的内容,不关闭缓冲区(不输出)。
ob_end_clean();        //删除内部缓冲区的内容,关闭缓冲区(不输出)。
ob_get_clean();        //返回内部缓冲区的内容,关闭缓冲区。相当于执行 ob_get_contents() and ob_end_clean()
ob_flush();               //发送内部缓冲区的内容到浏览器,删除缓冲区的内容,不关闭缓冲区。
ob_end_flush();        //发送内部缓冲区的内容到浏览器,删除缓冲区的内容,关闭缓冲区。
ob_get_flush();         //返回内部缓冲区的内容,并关闭缓冲区,再释放缓冲区的内容。相当于ob_end_flush()并返回缓冲区内容。
flush();                     //将ob_flush释放出来的内容,以及不在
php缓冲区中的内容,全部输出至浏览器;刷新内部缓冲区的内容,并输出。

ob_get_contents();    //返回缓冲区的内容,不输出。

ob_get_length();        //返回内部缓冲区的长度,如果缓冲区未被激活,该函数返回FALSE。
ob_get_level();          //Return the nesting level of the output buffering mechanism.
ob_get_status();       //Get status of output buffers.

ob_implicit_flush();   //打开或关闭绝对刷新,默认为关闭,打开后ob_implicit_flush(true),所谓绝对刷新,即当有输出语句(e.g: echo)被执行时,便把输出直接发送到浏览器,而不再需要调用flush()或等到脚本结束时才输出。

ob_gzhandler               //ob_start回调函数,用gzip压缩缓冲区的内容。
ob_list_handlers           //List all output handlers in use
output_add_rewrite_var     //Add URL rewriter values
output_reset_rewrite_vars  //Reset URL rewriter values

这些函数的行为受php_ini设置的影响:
output_buffering       //该值为ON时,将在所有脚本中使用输出控制;若该值为一个数字,则代表缓冲区的最大字节限制,当缓存内容达到该上限时将会自动向浏览器输出当前的缓冲区里的内容。
output_handler         //该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。
implicit_flush         //作用同ob_implicit_flush,默认为Off。 

举例:

<?php
Header("content-type:text/html;charset=UTF-8");
$gid = $_GET[‘goods_id‘]+0;//商品id
$goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件
$expr = 10;//静态文件有效期,秒
if(file_exists($goods_statis_file)){
  $file_ctime = filectime($goods_statis_file);//文件创建时间
  if($file_ctime+$expr > time()){//如果没过期
    echo file_get_contents($goods_statis_file);//输出静态文件内容
    exit;
  }else{//如果已过期
    unlink($goods_statis_file);//删除过期的静态页文件
    ob_start();
    //从数据库读取数据,并赋值给相关变量
    //include ("xxx.html");//加载对应的商品详情页模板
   echo date(‘Y-m-d H:i:s‘, time());
    $content = ob_get_contents();//把详情页内容赋值给$content变量
    file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中
    ob_end_flush();//输出商品详情页信息
  }
}else{
 $dsn = "mysql:host=127.0.0.1;dbname=rbac";
 $db = new PDO($dsn, ‘root‘, ‘‘,  array(PDO::ATTR_PERSISTENT =>true));
 $db->query(" set names utf8 ");
 set_time_limit(0);
 $sql = "SELECT * FROM `user` ; ";
 $data = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
  ob_start();
  print_r($data);
  //从数据库读取数据,并赋值给相关变量
 
  //include ("xxx.html");//加载对应的商品详情页模板
 
  $content = ob_get_contents();//把详情页内容赋值给$content变量
  file_put_contents($goods_statis_file, $content);//写入内容到对应静态文件中
  ob_end_flush();//发送内部缓冲区的内容到浏览器,删除缓冲区的内容,关闭缓冲区。
}
?>

 

















































以上是关于ob 页面静态化常用函数的主要内容,如果未能解决你的问题,请参考以下文章

php纯静态化技术之ob缓存详解

PHP缓存技术

php缓存技术总结

PHP中9大缓存技术总结

PHP中9大缓存技术总结

php页面静态化