ob_flush() 在 localhost 上工作,但在 GoDaddy 上不在线

Posted

技术标签:

【中文标题】ob_flush() 在 localhost 上工作,但在 GoDaddy 上不在线【英文标题】:ob_flush() working on localhost but not online at GoDaddy 【发布时间】:2017-06-05 23:29:42 【问题描述】:

我有以下 php 脚本:

<?php 
ob_end_flush();
ob_start();
for ($i=0; $i < 10; $i++) 
    echo "Line ".$i."</br>";
    ob_flush();
    flush();
    sleep(1);

ob_end_flush();
?>

它在 WAMP localhost 上运行良好,并且每秒打印新行,但在 GoDaddy 经济主机上在线,它不起作用。它显示了 10 秒后除了页面加载之外什么都没有发生的输出。

可能出了什么问题?

【问题讨论】:

调用函数phpinfo();在一个单独的 php 脚本中并在您的主机服务器上运行它以查看是否在 GoDaddy 的主机服务器中启用了 ob_flush() 究竟启用了什么? output_buffering = On,或者 output_buffering=4096 应该在 PHP.ini 中设置而不是 output_buffering = off 两种方法都试过了,都不行。 ***.com/questions/4481235/… 【参考方案1】:
It will work fine....

if(!ob_get_level()) ob_start();
echo json_encode(array('valid'=>true,'msg'=>'Flush occured.'));
$size = ob_get_length();
header("Content-Type: application/json");
// Set the content length of the response.
header("Content-Length: $size");
//Close the connection if you want to.
header("Connection: close");
// Flush all output.
ob_end_flush();
ob_flush();
flush();
// Close current session (if it exists).
if(session_id()) session_write_close();

【讨论】:

以上是关于ob_flush() 在 localhost 上工作,但在 GoDaddy 上不在线的主要内容,如果未能解决你的问题,请参考以下文章

ob_flush()和flush()和ob_implicit_flush(true)

PHP 缓冲区 ob_flush() 与 flush()

ob_flush 不适用于新的 apache 配置

“上工治未病”的难点与落地

上工机械MS45E双轮搅拌钻机完成性能测试

PHP flush()与ob_flush()的区别