php中ob_flush函数和flush函数用法分析
本文实例分析了php中ob_flush函数和flush函数用法。分享给大家供大家参考。具体如下:
ob_flush()函数: 取出PHP buffering中的数据,放入server buffering
flush()函数: 取出Server buffering的数据,放入browser buffering
例如代码:
<?php echo str_repeat('m0sh1' ,1000); for($i=0;$i<4;$i++) { echo $i.'<br />'; ob_flush(); flush(); sleep(1); } ?> <?php //header("content-type:text/html;charset='utf-8'"); //提示错误Cannot modify header information - headers already sent by ?>
执行发现
这里代码输出结果是一行一行输出的,
注意:正确使用二者的顺序是. 先ob_flush, 然后flush
希望本文所述对大家的php程序设计有所帮助。
相关推荐
-
PHP逐行输出(ob_flush与flush的组合)
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑- 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_*系列函数, 是操作PHP本身的输出缓冲区. 所以, ob_flush是刷新PHP自身的缓冲区. 而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.
-
PHP flush()与ob_flush()的区别详解
buffer ---- flush() buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页.主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域.通过buffer,可以使进程这间的相互等待变少.这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flu
-
PHP flush 函数使用注意事项
ob_*系列函数, 是操作PHP本身的输出缓冲区. 所以, ob_flush是刷新PHP自身的缓冲区. 而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区. 在apache module的sapi下, flush会通过调用sapi_module的flush成员函数指针, 间接的调用apache的api: ap_rflush刷新apache的输出缓冲
-
php中flush()、ob_flush()、ob_end_flush()的区别介绍
flush().ob_flush().ob_end_flush()三者的区别: 首先,说下buffer,它是一个内存地址空间,为4096(1kb)[在php.ini配置文件中找到output_buffering配 置],php有php output_buffering机制,php代码在执行的时候,并不是立即将内容输出,而是想将echo/print内容输出到buffer,buffer满的时候才会将数据交给系统内核交由tcp传给浏览器显示,当开启php php output_buffering机制(
-
php flush类输出缓冲剖析
<?php for ($i=10; $i>0; $i--) { echo $i; flush(); sleep(1); } ?> 按照php手册里的说法 该函数将当前为止程序的所有输出发送到用户的浏览器. 上面的这段代码,应该隔一秒钟输出一次$i.但是实际中却不一定是这样.有可能是等了10秒钟后,所有的输出同时呈现出来. 好,我们来改一下这段代码,改成 <?php ob_end_clean();//修改部分 for ($i=10; $i>0; $i--) { echo $i;
-
Nginx环境下PHP flush失效的解决方法
问题 我在一次调试PHP逐行输出时候,发现ob_flush和flush两个都失效了,通过phpinfo基本能判断php.ini的设置是正常的. 解决方法 再去看Nginx,发现Nginx中,有如下的设置: fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; 问题基本找到了,Nginx会缓冲PHP输出的信息,当达到128k时才会将缓冲区的数据发送给客户端,那么我们首先需要将这个缓冲区调小,比如: fastcgi_buffer_size 4k; fas
-
php flush无效,IIS7下php实时输出的方法
在一个比较费时的操作中,想把操作记录在浏览器上实时显示出来,用到了flush(),把缓冲中的内容发送到浏览器.但在iis7里面用fastcgi模式配置的php怎么都实现不了,结果总是一起显示出来. for ($i=10; $i>0; $i--) { echo $i.'<br />'; @ob_flush(); flush(); sleep(1); } 上面的代码在IIS的默认设置下是无法逐渐显示结果的.解决办法如下: 打开文件 C:\Windows\System32\inetsrv\co
-
简单谈谈php中ob_flush和flush的区别
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑- 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_*系列函数, 是操作PHP本身的输出缓冲区. 所以, ob_flush是刷新PHP自身的缓冲区. 而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.
-
php ob_flush,flush在ie中缓冲无效的解决方法
PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等).该函数将当前为止程序的所有输出发送到用户的浏览器. flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响.因此,必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲. 个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止 自己写了个小例子,想在页面每隔一秒输出一个数字. 按照网上的代码: 复制代码 代码如下: ob_e
-
php使用ob_flush不能每隔一秒输出原理分析
本文实例讲述了php使用ob_flush不能每隔一秒输出原理.分享给大家供大家参考.具体分析如下: 实现功能: 浏览器每隔一秒输出一个数字. php.ini配置为: 版本5.3 implicit_flush = off output_buffering = off 另:查看output_buffering是否打开,可以: 复制代码 代码如下: var_dump(ini_get('output_buffering')); 好我们再来看看这段代码: <?php $i = 3; ob_start();
随机推荐
- 透明数据加密(TDE)库的备份和还原
- JavaScript学习小结(一)——JavaScript入门基础
- 怎样去阅读一份php源代码
- ajax完美实现两个网页 分页功能的实例代码
- winform简单缓存类实例
- Android RecyclerView添加上拉加载更多效果
- IE6-IE9不支持table.innerHTML的解决方法分享
- Python如何import文件夹下的文件(实现方法)
- Java Web开发之MD5加密用法分析
- Java gbk转utf-8
- 获取下拉列表框的值是数组,split,$.inArray示例
- Win2003中apache2整合tomcat5和IIS6的方法
- php echo 输出字符串函数详解
- Android笔记之:App模块化及工程扩展的应用
- 浅谈java分页三个类 PageBean ResponseUtil StringUtil
- php4的session功能评述(二)
- 中、日、欧IPv6应用新进展二
- 如何理解Vue的v-model指令的使用方法
- 解决vue v-for 遍历循环时key值报错的问题
- Django框架使用内置方法实现登录功能详解