php 输出缓冲 Output Control
output_buffering = 4096
4096表示缓冲区的大小。
<?php
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
sleep(1);
}
?>
代码如上,执行的效果并不是我们想要的,浏览器在等待了10秒后,一次性的把0-9输出在了页面上。
<?php //关闭缓冲区
ob_end_clean();
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />'; //如果不加flush,则不是一个一个输出
flush();
sleep(1);
}
?>
<?php
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
ob_flush();
flush();
sleep(1);
}
?>
这段代码跟上面的代码效果是一样的,我们通过ob_flush刷新php缓冲,并清空缓冲区内容(但不会关闭缓冲区)。然后调用flush刷新服务器缓冲,输出到浏览器。
<?php
ob_start();
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
}
$str = ob_get_contents();
file_put_contents('./output.txt', $str);
ob_end_clean();
//注意,这里的ob_end_clean()只是关闭了ob_start()打开的缓冲
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
flush();
sleep(1);
}
?>
请看上述代码:我们ob_start()开启一个缓冲,for循环输出的内容全部放在了缓冲区中,通过ob_get_contents()来获取缓冲区的内容(只是得到缓冲区内容,缓冲区中的内容还存在)。然后ob_end_clean()清空并关闭缓冲。但下面的for循环输出并没有像我们想的那样一个一个输出。因为php允许存在多个缓冲区,我们这里有两个缓冲区,一个是php已经打开的,一个是我们自已调用ob_start()打开的。
<?php
ob_start();
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
}
$str = ob_get_contents();
file_put_contents('./output.txt', $str);
ob_end_clean();
ob_end_clean();
for($i = 0; $i< 10; ++$i) {
echo $i, '<br />';
flush();
sleep(1);
}
?>
修改成这样,输出结果就是我们想要的了。
<?php
ob_start();
var_dump(ob_get_level()); ob_start();
var_dump(ob_get_level()); ob_end_flush();
ob_end_flush();
?>
<?php
echo '111';
echo '222';
ob_clean();
echo '333';
?>
<?php
ob_start();
echo '111';
echo '222';
$str = ob_get_clean();
echo $str;
echo '333';
$str = ob_get_flush();
file_put_contents('str.txt', $str); for($i = 0; $i < 10; ++$i) {
echo $i, '<br />';
flush();
sleep(1);
}
?>
代码如下,ob_start()开启一个缓冲,输出111和222,放入缓冲,然后ob_get_clean()获取缓冲内容,并半闭缓冲,返回数据。这时php已打开的缓冲并没有关闭,然后我们把返回的数据输出,再输出333,通过ob_get_flush()送出缓冲内容,返回数据,并关闭缓冲(这时php的缓冲也关了),后面的for循环输出也会一个一个输出。
php 输出缓冲 Output Control的更多相关文章
- PHP输出缓冲控制- Output Control 函数应用详解
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...
- PHP输出缓冲控制 - Output Control 函 应用详解
简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffe ...
- PHP 输出缓冲控制(Output Control) 学习
php 缓冲简介 其实我对php ob 系列印象还是很模糊,具体怎么玩的,还不是很了解,平时curd,确实对这些内容没有深入.作为phper 甚是惭愧.网上搜了一通,互相copy,代码运行不能出现作者 ...
- PHP输出缓冲(Output Buffering)
什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题~其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备 ...
- PHP输出控制(Output Control)函数
ob_start 此函数将打开输出缓冲.当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中. 内部缓冲区的内容可以用 ob_get_contents() ...
- PHP输出缓冲控制
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会 向磁盘写入的,而是写到buffer中,当buffer写 ...
- 诡异的php 输出缓冲
我的本地环境 windows + apche + php5.2 今天,碰到一个诡异的问题,以前认为 php 脚本中调用 heade()函数之前不能有任何的如 echo,print ,print_r, ...
- php Output Control 函数 ob_系列函数详解
<?php /* * 输出缓冲控制 * * flush — 刷新输出缓冲 ob_clean — 清空(擦掉)输出缓冲区 ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲 ob_en ...
- PHP中output control
Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况.输出控制函数不对使用 header() 或 setcookie ...
随机推荐
- Unreal Engine 4 性能优化工具(Profiler Tool)
转自:http://aigo.iteye.com/blog/2296548 Profiler Tool Reference https://docs.unrealengine.com/latest/I ...
- 6.22-Servlet
一.servlet servlet是运行在服务器端的java程序 jsp专注于显示 servlet处理请求和响应 创建servlet 继承HttpServlet 实现servlet接口 配置servl ...
- 长沙雅礼中学集训-------------------day3
今天的收获还是蛮大的,终于体会了一波在知识的海洋中遨游的美滋滋的快感. T1:给你N个点的位置和他们的速度,这些点向一个方向移动,求前M次超越者的集合A和被超越者的集合B(集合为这些点的速度),以及从 ...
- HTML|CSS总结与补充
知识内容: 1.HTML总结 2.CSS总结 一.HTML总结 详细内容见:http://www.cnblogs.com/wyb666/p/8733699.html 1.HTML介绍及前端入门 (1) ...
- python写个御剑
前言: 今天师傅叫我,写个python版的御剑.然后我之前也写过 不过不怎么样,这次有新想法. 思路: 御剑:读取御剑配置文件里的所有路径,加上用户要扫描的url.进行批量检测,如果状态码为200并且 ...
- spring 注解 @NotBlank and BingResult
@NotEmpty用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 在 user对象中需要
- as3 区别中文 英文 数字
1)英文a-z是65-90,A-Z是97-112 2)数字是0-9是,48-57 3)上万的都是中文字符 var str:String = "hello world! 你好世界! 88!&q ...
- String类的intern()方法
0.引言 什么都先不说,先看下面这个引入的例子: String str1 = new String("SEU")+ new String("Calvin"); ...
- HP LaserJet MFP M227_M231双面打印
双面打印设置
- Python3 ssl模块不可用的问题
编译安装完Python3之后,使用pip来安装python库,发现了如下报错: $ pip install numpy pip is configured with locations that re ...