php ob gzhandler:php ob

output control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想
在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(),
发送的文件头信息产生影响,只对那些类似于 echo() 和 php 代码的数据块有作用。
我们先举一个简单的例子,让大家对output control有一个大致的印象:
example 1.
-------------------------------------------------------------------------------------
---------------------------------
ob_start(); //打开缓冲区
echo "hello\n"; //输出
header(“location:index.php”); //把浏览器重定向到index.php
ob_end_flush();//输出全部内容到浏览器
?>
-------------------------------------------------------------------------------------
---------------------------------
所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用
这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错。如果我
们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:“header had
all ready send by”!但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面
的字符不会输出到浏览器,而是保留在服务器,直到你使用flush或者ob_end_flush才会输出,所
以并不会有任何文件头输出的错误!
一、 相关函数简介:
1、flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自php程序的非文件头信息均不会发送,而是保存在内部缓冲区。
为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 false 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激
活。则返回 false。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。 本文链接http://www.cxybl.com/html/wlbc/Php/20120531/27127.html

时间: 2024-10-18 14:35:44

php ob gzhandler:php ob的相关文章

php中ob函数缓冲机制深入理解_php实例

下面就php中ob函数缓冲机制通过文字说明加代码分析的形式给大家展示如下: 对于一个刚刚入门的php程序员来说,php缓冲区是几乎透明的.在他们心目中,一个echo print_r 函数,数据便会'嗖'的一声飞到浏览器上,显示出来.我也一直如此单纯地认为. 其实,在技术的世界里,向来都是由简单到复杂,也许那些技术开发者开始单纯如你我,但是面对残酷的现实,不得不调整策略,以期提高机器运行效率,最后想到了那些让我们赞叹的idea. 说到缓冲,也就是buffer,这里必须要和缓存做一下比较,单纯地比较

Java数据报编程之测试程序

编程|程序|数据   这里写得是后面数据报编程用到的测试程序,这个程序包括一套自定义事件,一个能滚动的显示图象的Java bean组件. 在面向对象的程序设计中,事件消息(Event Message)是对象间通信的基本方式.在图形用户界面程序中,GUI组件对象根据用户的交互产生各种类型的事件消息,这些事件消息由应用程序的事件处理代码捕获,在进行相应的处理后驱动消息响应对象做出反应. 对于本程序,需求是这样的:数据接收器把数据接收完毕时,要产生事件,该事件将激活事件处理器.为此要自定义相关对象类,

JSP隐式对象和MVC设计模式

 今天我们一起来了解一下关于JSP应用的JSP的隐式对像和MVC设计模式. 首先我们先来说一下JSP的隐式对象:JSP隐式对象是Web容器加载的一组类的实例.它是可以直接在JSP页面使用的对象.分为4个主要类别:1. 输入和输出对象:控制页面的输入和输出(request.response.out). 2. 作用域通信对象:检索与JSP页面的Servlet相关的信息(session.application.pageContext). 3. Servlet对象:提供有关页面环境的信息(page.co

Java 程序死锁问题原理及解决方案

 Java 语言通过 synchronized 关键字来保证原子性,这是因为每一个 ob ject 都有一个隐含的锁,这个也称作监视器对象.在进入 synchronized 之前自动获取此内部锁,而一旦离开此方式,无论是完成或者中断都会自动释放锁.显然这是一个独占锁,每个锁请求之间是互斥的.相对于众多高级锁 (Lock/ReadWriteLock 等),synchronized 的代价都比后者要高.但是 synchronzied 的语法比较简单,而且也比较容易使用和理解.Lock 一旦调用了 l

Java中overload和override的区别

 1. 方法重载(overload) 概念:简单的说:方法重载就是类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数. 注意事项: (1) 方法名相同 (2) 方法的参数类型.个数.顺序不至少有一项不同 (3) 方法返回类型可以不同 (4) 方法的修饰符可以不同 如果只是返回类型不一样,不能够构成重载 如果只是控制访问修饰符号不一样,也是不能构成重载的 Overloaded的方法是可以改变返回值的类型. 2. 方法覆盖(override) 概念:简单的说:方法覆盖就是子类有一

[c++]派生类的应用

  在已有的Point类的基础上,定义一个"Circle"派生类,要求:新增一个半径成员;能计 算并输出圆的周长及加圆面积 #ifndef __Dervide_circle__circle__ #define __Dervide_circle__circle__ #include using namespace std; #define PI 3.1415926 class point { private: float x,y; public: point(void) {x=0;y=0

通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说

上节内容: 1:通用社区登陆组件技术分享(开源)上篇:OAuth 授权登陆介绍 2:通用社区登陆组件技术分享(开源)中篇:OAuth 登陆组件流程及组件集成方法   本节内容: 1:简述组件设计的过程及思路及部分重点源码讲解 2:源码下载 3:扩展机制说明  附源码截图:等会看以下思路时,可以对照着看:   一:简述组件设计的过程及思路   1:为什么想到弄成组件? 当重复的代码或相似的事件>=2个时,我都会想一下,是否还可能有第3个,第4个相近的,如果有,就会统一处理,组件就是设计的再通用一些

JavaScript内核之基本概念_基础知识

本章主要讲述JavaScript中的数据类型(基本类型与引用类型),变量(包括变量的作用域),操作符(主要是一些较为常见,但是不容易从字面上理解的操作符).由于JavaScript中的"一切皆对象",在掌握了这些基本的概念之后,读者就可以较为轻松的理解诸如作用域,调用对象,闭包,currying等等较难理解的概念了. 数据类型 有程序设计经验的读者肯定知道,在C或者Java这样的语言中,数据是有类型的,比如用以表示用户名的属性是字符串,而一个雇员的年龄则是一个数字,表示UI上的一个开关

Java 编程要点之 I/O 流详解

本文详细介绍了 Java I/O 流的基础用法和原理. 字节流(Byte Streams) 字节流处理原始的二进制数据 I/O.输入输出的是8位字节,相关的类为 InputStream 和 OutputStream. 字节流的类有许多.为了演示字节流的工作,我们将重点放在文件 I/O字节流 FileInputStream 和 FileOutputStream 上.其他种类的字节流用法类似,主要区别在于它们构造的方式,大家可以举一反三. 用法 下面一例子 CopyBytes, 从 xanadu.t