• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ob_start()求教解决思路

php 搞代码 3年前 (2022-01-24) 20次浏览 已收录 0个评论

ob_start()求教
<?php
ob_start(); //—————————–1

//for($s=0;$s<=300;$s++){echo '';}

//ob_end_clean(); //———————————-2

for($var=0;$var<=10;$var++){
echo $var;
print str_repeat(“”, 4096);
ob_flush();//————————–3
flush(); //————————–4
sleep(1); //————————–5
}
?>
一个测试缓冲区的例子,问题来了,当使用ob_start()函数时候,【3】的作用是释放缓冲区的内容,【4】将不再缓冲区的内容发送到页面,【5】使得每秒发送一次,但是为什么还会等10秒后一次将内容全发送过去.

查了很多文章,很多都说使用【2】处的方法,注释掉【1】【3】,但是这样就关闭了缓冲区,

网上关于Php的说法有称内部缓冲区的,也有叫缓冲区的,不知道是不是一个东西。
还有Php.ini文件中的 output_buffering他的缓冲区是不是就本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码是ob_start()开启的缓冲区?

——解决方案——————–
ob_flush不是很好用,请参考官方文档。
http://il.php.net/manual/en/function.ob-flush.php

some problems with ob_flush() and flush() could be resolved by defining content type header :
header( ‘Content-type: text/html; charset=utf-8’ );

so working code looks like this:
<?php
header( ‘Content-type: text/html; charset=utf-8’ );
echo ‘Begin …
‘;
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . ‘
‘;
flush();
ob_flush();
sleep(1);
}
echo ‘End …
‘;
?>


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ob_start()求教解决思路

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址