php 中的 Output Control 函数
先看一个简单的例子
<?php
ob_start();
echo 111;
ob_clean();
echo 222;
ob_start()开启ob缓存,然后111放进了ob缓存, 再调用ob_clean()清除缓存,最后输出的结果是222。
原理:页面执行到最后, 会把ob缓存的数据(如果有的话)强制刷新到程序缓存, 然后通过apache对数据封装成http响应包, 返回给浏览器。
注意:header头信息放程序缓存,如果没有ob缓存,则所有数据直接放程序缓存。
更多api参考 : http://php.net/manual/zh/ref.outcontrol.php
<?php
for($i = 0; $i < 3; $i++){
echo $i;
sleep(1);
flush();
}
flush 只是刷新到浏览器缓存, 然后程序结束时再一起输出。
我把浏览器缓存占满就能看到效果.
<?php
ob_end_clean(); //php.ini中设置了开启ob缓存, 所以关闭一下.
echo str_repeat(' ',1024);
for($i = 0; $i < 5; $i++){
echo $i;
sleep(1);
flush();
}
ob缓存中能存放哪些数据.
ob_start() 开始到 ob_get_contents()之间返回给浏览器的数据。
实现页面静态化可以使用正则替换, 也可以利用ob实现页面静态化。
<?php
if(file_exists('index.html') && filemtime('index.html') + 60 >= time()){
echo file_get_contents('index.html');
exit;
}
ob_start();
?> //这里写原来的代码 <?php
$html_str = ob_get_contents();
file_put_contents('index.html', $html_str);
?>
如果内容修改, 我们看不到最新内容, 这是我们可以简单优化, 每过60秒刷新一次。
php 中的 Output Control 函数的更多相关文章
- PHP输出缓冲控制- Output Control 函数应用详解
		
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...
 - php Output Control 函数 ob_系列函数详解
		
<?php /* * 输出缓冲控制 * * flush — 刷新输出缓冲 ob_clean — 清空(擦掉)输出缓冲区 ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲 ob_en ...
 - PHP中output control
		
Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况.输出控制函数不对使用 header() 或 setcookie ...
 - PHP输出缓冲控制 - Output Control 函 应用详解
		
简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffe ...
 - ABAP中的Table Control编程
		
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重 ...
 - 零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
		
http://www.cnblogs.com/tanlon/p/3879081.html 在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构: (1) AVF ...
 - 在VC++中使用Tab Control控件
		
系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...
 - C语言中可变参数的函数(三个点,“...”)
		
C语言中可变参数的函数(三个点,“...”) 本文主要介绍va_start和va_end的使用及原理. 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end ...
 - [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
		
在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构: (1) AVFormatContext AVFormatContext是一个贯穿始终的数据结构,很多函 ...
 
随机推荐
- ios 下拉刷新开源框架  MJRefresh
			
gitHub 下载框架 搜索MJExampleViewController.h 下拉刷新 MJTableViewController 上拉刷新 MJTableViewController Collec ...
 - Floyd判圈算法 Floyd Cycle Detection Algorithm
			
2018-01-13 20:55:56 Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm) ...
 - 手动建立Mysql表实体类技巧
			
首先执行一条sql语句,也可以在开发中插入数据.修改数据或者查询数据的某个属性时使用. select sc.COLUMN_NAME from information_schema.COLUMNS as ...
 - 第六天 文件的基本管理和xfs文进系统备份恢复
			
1.1 Linux系统目录结构,相对路径/绝对路径 1.1.1 Linux系统目录结构 在linux系统中一切都是文件 / 根目录,一切的起点,就像是一个树杈一样,他是所有叉的根 /bin 在单用户模 ...
 - 个人知识管理系统Version1.0开发记录(03)
			
demo 设 计 一个知识点demo,在数据库和用户界面的互动事件.分三个层次,数据存储,数据方法工具,数据呈现界面.这一次先完成数据存储,按以下逻辑实现.工具:eclipse,oracle数据库, ...
 - Python抓取糗事百科成人版图片
			
最近开始学习爬虫,一开始看的是静觅的爬虫系列文章,今天看到糗事百科成人版,心里就邪恶了一下,把图片都爬下来吧,哈哈~ 虽然后来实现了,但还是存在一些问题,暂且不提,先切入正题吧,没什么好说的,直接上代 ...
 - BOM-event事件
			
添加事件监听 <button id="btnShoot">shoot</button><br> <button id="btnA ...
 - 013PHP基础知识——流程控制(一)
			
<?php /** * 13 流程控制(一) * if语句: if(表达式){ 表达式 }elseif(表达式){ 代码段 } * if语句中,一个条件成立,其他分支不执行. * if中的表达式 ...
 - 用U盘安装ubuntu
			
用U盘安装操作系统,并不鲜见,对于Windows,可以用大白菜安装XP.Win7等,本质上是在U盘上安装一个小型的windows(WinPE),然后利用ghost一键还原技术,把U盘中的XP.gho( ...
 - HDU 5831 Rikka with Parenthesis II (贪心)
			
Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...