PHP中的输出缓冲?

Jor*_*die 2 php output-buffering

我似乎对PHP输出缓冲感到困惑.我有这样的代码:

function return_json($obj) {
  ob_get_clean();
  ob_start();
  header("Content-Type: application/json");
  echo json_encode($obj);
  exit;
}
Run Code Online (Sandbox Code Playgroud)

但它似乎不喜欢ob_get_clean().我之所以这样做,是因为某些HTML可能会在达到这一点之前意外生成,但我认为这就是你的意图.

我错过了什么?

Ily*_*man 9

要使用ob_get_clean(),您必须确保在某些时候您先前有ob_start()'ed.否则,没有要清理的缓冲区,所有内容都已刷新到用户代理.


Gum*_*mbo 7

使用该ob_get_level()函数查看输出缓冲区是否处于活动状态并退出:

while (ob_get_level()) {
    ob_end_clean();
}
Run Code Online (Sandbox Code Playgroud)