使PHP即时输出结果到浏览器
2017-01-09 18:55
344 查看
PHP:
<?php
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
sleep (
1 )
;
}
?>
类似上面的程序如果在PHP解释器中执行,每秒会输出一个数,和想象中一样。但是如果使用浏览器来访问,情况就有所不同。在浏览器中访问时,只有在十秒之后才会一次性地显示所有结果。
可以使用ob_flush() 和flush() 来强制浏览器刷新缓存,程序改为:
PHP:
<?php
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
再使用浏览器访问,四个浏览器中只有Firefox 即时输出了结果。这是因为不同的浏览器对缓冲的处理方式不同,Firefox在被要求强制刷新缓存时很听话,而IE需要在接收到256个字节后才会将内容即时展现在界面上,Safari
需要1024个字节,Opera 更有个性,只有在遇到HTML标签的时候才会即时输出(Safari也是如此)。
对于IE和Safari,可以在输出结果之前先输出大于限定数目的空白字符:
PHP:
<?php
echo
str_repeat
( " "
, 1024 )
;
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
而对于Opera、Safari遇到HTML标签后才会即时输出的问题,由于一般我们不会只往浏览器中输出纯文本内容,故可以不作考虑。对于上面的程序,可以在输出结果中加入HTML标签来达到目的:
PHP:
<?php
echo
str_repeat
( " "
, 1024 )
;
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
. "<br>"
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
<?php
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
sleep (
1 )
;
}
?>
类似上面的程序如果在PHP解释器中执行,每秒会输出一个数,和想象中一样。但是如果使用浏览器来访问,情况就有所不同。在浏览器中访问时,只有在十秒之后才会一次性地显示所有结果。
可以使用ob_flush() 和flush() 来强制浏览器刷新缓存,程序改为:
PHP:
<?php
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
再使用浏览器访问,四个浏览器中只有Firefox 即时输出了结果。这是因为不同的浏览器对缓冲的处理方式不同,Firefox在被要求强制刷新缓存时很听话,而IE需要在接收到256个字节后才会将内容即时展现在界面上,Safari
需要1024个字节,Opera 更有个性,只有在遇到HTML标签的时候才会即时输出(Safari也是如此)。
对于IE和Safari,可以在输出结果之前先输出大于限定数目的空白字符:
PHP:
<?php
echo
str_repeat
( " "
, 1024 )
;
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
而对于Opera、Safari遇到HTML标签后才会即时输出的问题,由于一般我们不会只往浏览器中输出纯文本内容,故可以不作考虑。对于上面的程序,可以在输出结果中加入HTML标签来达到目的:
PHP:
<?php
echo
str_repeat
( " "
, 1024 )
;
for
( $i =
0 ;
$i < 10
; $i
++ ) {
echo $i
. "<br>"
;
ob_flush (
) ;
flush (
) ;
sleep (
1 )
;
}
?>
相关文章推荐
- thinkphp 中 volist标签下的 $vo.id作为另一个Array的对象
- PHP等比例缩放图片(最大宽或高)
- PHP刚做完的一个商品专区异步加载和页面搜索,抽空整理mark下...
- laravel配置路由出现404解决办法
- 初尝phpunit进行接口自动化测试
- ThinkPHP的URL操作
- PHP中Imagick类的使用(转)
- php 获取指定格式时间
- phpstorm(或webstorm) 打开后 一直停留在scanning files to index....,或跳出内存不够的提示框
- 关于php迭代循环(无限分类)
- ecshop适应PHP7的修改
- 【PHP】开发中常用自定义小功能函数
- PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。
- phpmyadmin在本地用localhost 打开特别慢,运行特别卡,耗时长的原因
- Laravel中简单使用Repository模式
- selectpicker 动态加载数据
- php yield 个人小解
- php 序列化 反序列化 __sleep __wakeup
- Windows 配置PHP7开发环境
- PHP将Excel导入数据库及数据库数据导出至Excel的方法