无论缓冲区设置如何,PHP命令行输出缓冲区输出

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (135)

我有一些课程,我正在编写单元测试,其中有回声。我想压制这个输出并思考ob_start()并且ob_clean()就足够了,但它们没有效果。

public function testSomething (){
    ob_start();
    $class = new MyClass();
    $class->method();
    ob_clean();
}

我也试着变体,如ob_start(false, 0, true);ob_end_clean()无济于事。

提问于
用户回答回答于

你在PHP ini中设置了implicit_flushtrue吗?这可能会导致您看到的行为,因为它告诉PHP告诉输出层在每个输出块后自动刷新自身。这相当于在每次调用print()或echo()以及每个HTML块之后调用PHP函数flush()。

用户回答回答于

你可能想要这样的东西

<?php
public function testSomething (){
    ob_start();
    ob_implicit_flush(false); // turn off implicit flush

// Make your output below
    $class = new MyClass();
    $class->method();
// End of output

// store output into variable:
    $output = ob_get_contents();
}
?>

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励