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是一个贯穿始终的数据结构,很多函 ...
随机推荐
- 数据可视化——Matplotlib(1)
导入相关模块 import matplotlib.pyplot as plt import pandas as pd import numpy as np 基本图表 散点图:scatter N = 1 ...
- python+opencv+pyqt5控制摄像头在Qlabel上显示
import cv2 import numpy as numpy from PIL import * import sys from PyQt5.QtWidgets import * from PyQ ...
- 使用bootstrap时碰到问题$(...).modal is not a function
我出现这个问题是,因为bootstrap没有正确引入. 除了bootstrap的路径需要被正确引入外,它引入时还要放在jquery.js后面,否则也会报这个错误.
- kotlin for android----------MVP模式实现登录
学习了Kotlin,随便来个小案例,以MVP+Kotlin 来实现登录的一个小案例,希望对大家有所帮助,效果图: MVP: Model Model 是用户界面需要显示数据的抽象,也可以理解为从业务数据 ...
- 利用ftrace跟踪内核static tracepoint
摘要:和很多linux内核子系统一样,static tracepoint有很多层次,其中某个层次都展示给不同层次的开发者来满足他们的不同需求.关于linux tracepoint的详细信息,我们可以在 ...
- Django 前后台的数据传递示列
Django 前后台的数据传递的方法 Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: ? 1 2 3 4 from django.shortcuts import r ...
- AngularJS如何修改URL中的参数
一. 获取url的相关方法(不修改URL): 1.获取当前完整的url路径 var absurl = $location.absUrl(); //http://172.16.0.88:8100/#/h ...
- mybatis定义拦截器
applicationContext.xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlS ...
- Java复习11. 单例编程
Java复习11. 单例编程 1.最简单的写法,那个方式是线程不安全的 public class Singleton { private static Singleton instance; ...
- iOS使用Instruments的工具
使用Instruments的工具 iOSXcodeInstrumentsInstruments是一个官方提供的强大的性能调试工具集. 1.Blank(空模板):创建一个空的模板,可以从Library库 ...