DJa*_*ari 19 php output-buffering
嗨,请查看以下代码:
<?php
ob_start();
echo "Start ...<br />\n";
for( $i = 0 ; $i < 10 ; $i++ )
{
echo "$i<br />\n";
ob_flush();
flush();
sleep(1);
}
echo "End ...<br />\n";
?>
Run Code Online (Sandbox Code Playgroud)
这是不正确的?我测试了它,但我的输出显示脚本完成后,有任何解决方案吗?
小智 15
嘿,我也陷入了这个问题,最后得到了正确的解决方案,这是给你的
您必须通过两种方式为页面添加内容类型1.使用html标记
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)
防爆.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wp Migration</title>
</head>
<body>
<?php
for($i=0;$i<70;$i++)
{
echo 'printing...<br>';
ob_flush();
flush();
sleep(3);
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用php头功能
<?php header( 'Content-type: text/html; charset=utf-8' ); ?>
防爆.
<?php
header( 'Content-type: text/html; charset=utf-8' );
for($i=0;$i<70;$i++)
{
echo 'printing...<br>';
ob_flush();
flush();
sleep(3);
}
?>
Run Code Online (Sandbox Code Playgroud)
祝一切顺利
某些浏览器在开始渲染之前需要至少接收256个字符.您是否已尝试填充更多输出:
echo str_repeat(' ', 50) . "$i<br />\n";
Run Code Online (Sandbox Code Playgroud)
编辑:
在Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9我能够通过设置重现OP的问题
zlib.output_compression = On
Run Code Online (Sandbox Code Playgroud)
再次关闭它
zlib.output_compression = Off
Run Code Online (Sandbox Code Playgroud)
使脚本按需运行.
尝试删除第一行的调用ob_start():您不需要启用输出缓冲 - 它可能会在这里引起麻烦。
我已经测试了你的代码:
ob_start()在第一行调用,我只会在脚本完成(10 秒后)时看到输出ob_start(),那么,只要它显示在标准输出上,我就会每秒看到一行输出。| 归档时间: |
|
| 查看次数: |
21323 次 |
| 最近记录: |