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 ...
随机推荐
- 递归神经网络(Recursive Neural Network, RNN)
信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...
- eventql操作脚本
a) standalone mode mkdir -p /var/evql/standalone/usr/local/bin/evqld --standalone --datadir /var/evq ...
- 根据inode编号来删除文件或目录
在Linux系统上,有时候会出现文件名为特殊字符的文件或目录,当我们使用rm来删除这样的文件或目录时,就会出错导致删不掉.但是我们可以依据inode号来删除这样的文件,方法如下: (1)执行ls -i ...
- Spectrum Scale
高端存储:2016年为止,最新产品为DS8884.DS8886和DS8888. 闪存系统:2016年为止,最新产品,以FlashSystem 900为硬件基础,包装了FlashSystem V9000 ...
- Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0 环境 本教程使用 CentOS 6.4 32位 作为系统环境,请自行安装系统.如果用的是 Ubuntu 系统,请查 ...
- uva-10160-枚举
若当前搜索到的城市n前面1-n-1编号的城市中有没有通电的,则永远也无法输送电力给那个城市,因为在剪枝时附加了和此结点连接的最大结点小于当前的结点 这段 for(int i = 1; i < c ...
- 12.mysql高级查询
1. mysql 支持三种类型的连接查询: on 后面跟的是关联条件 内连接查询 select s.name,c.name from students as s inner join classes ...
- 使用three.js开发3d地图初探
three是图形引擎,而web二维三维地图都是基于图形引擎的,所以拿three来开发需求简单的三维地图应用是没什么问题的. 1.坐标转换 实际地理坐标为经度.纬度.高度,而three.js使用的是右手 ...
- CSS改变png图片颜色
来源地址:http://www.zhangxinxu.com/wordpress/?p=5429 张鑫旭大神的个人网站上看到的,纯属分享和记录 css div.icon{height:20px;wid ...
- maven错误
maven-enforcer-plugin (goal "enforce") is ignored by m2e. Plugin execution not covered by ...