ob_flush () 在我的服务器上不工作
ob_flush () does not work on my server
此功能在我的其他服务器和本地电脑上完美运行,每秒显示数字,但是当我从我的客户端发送云代码时,它仅在页面加载 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);
}
正如您提到的,您在评论中没有看到 output_buffering
的任何值,我假设它在您的服务器中已关闭。
如果您使用自己的服务器,请在您的 phpinfo
页面(我要求您在评论中创建)中查找 Configuration File (php.ini) Path
选项。
然后打开该文件,找到 ;output_buffering = Off
行,并将其更改为:
output_buffering = 4096
您可能需要重新启动您的 Apache 服务器(或您的网络服务器,如果它不同的话)。
============================================= ================
如果您使用的是共享主机,大多数主机提供商都允许您通过将 php.ini
文件添加到 public_html
文件夹来添加自己的配置。
创建一个名为 php.ini
的文件并在其中包含 output_buffering = 4096
,然后将其上传到您的 public_html
文件夹。它应该工作。
希望对您有所帮助 :) 如有任何疑问,请随时提出。
此功能在我的其他服务器和本地电脑上完美运行,每秒显示数字,但是当我从我的客户端发送云代码时,它仅在页面加载 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);
}
正如您提到的,您在评论中没有看到 output_buffering
的任何值,我假设它在您的服务器中已关闭。
如果您使用自己的服务器,请在您的 phpinfo
页面(我要求您在评论中创建)中查找 Configuration File (php.ini) Path
选项。
然后打开该文件,找到 ;output_buffering = Off
行,并将其更改为:
output_buffering = 4096
您可能需要重新启动您的 Apache 服务器(或您的网络服务器,如果它不同的话)。
============================================= ================
如果您使用的是共享主机,大多数主机提供商都允许您通过将 php.ini
文件添加到 public_html
文件夹来添加自己的配置。
创建一个名为 php.ini
的文件并在其中包含 output_buffering = 4096
,然后将其上传到您的 public_html
文件夹。它应该工作。
希望对您有所帮助 :) 如有任何疑问,请随时提出。