此功能在我的其他服务器上和在我的PC上的本地计算机上都可以完美地运行,每秒显示数字,但是当我从客户端发送云代码时,它仅在页面加载100%后显示结果。
它在这里可以正常工作: http://kicklaunch.me/buffer.php
仅在页面完全加载时: http://raio.adm.br/buffer.php
两个服务器都具有相同的PHP版本5.4.45
<?php
for($i=0; $i<20; $i++) {
echo 'printing...'."<p>";
ob_flush();
flush();
sleep(1);
}
?>
解决方案
output_buffering =关闭
ob_implicit_flush(1);
for($i=0; $i<10; $i++){
echo $i;
//this is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
sleep(1);
}
答案 0 :(得分:1)
正如您所提到的,您在注释中没有看到output_buffering
的任何值,我认为您的服务器已将其关闭。
如果您使用自己的服务器,请在Configuration File (php.ini) Path
页面(我要求您在注释中创建)中寻找phpinfo
选项。
然后打开该文件,找到;output_buffering = Off
行,并将其更改为:
output_buffering = 4096
您可能需要重新启动apache服务器(或与之不同的Web服务器)。
================================================ =============
如果您使用共享主机,则大多数主机提供商都可以通过将php.ini
文件添加到public_html
文件夹中来添加自己的配置。
创建一个名为php.ini
的文件,并在其中包含output_buffering = 4096
,然后将其上传到您的public_html
文件夹中。它应该工作。
希望它会有所帮助:)如果您有任何疑问,请随时提问。