首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP命令行输出缓冲区输出,而不考虑缓冲区设置

PHP命令行输出缓冲区输出,而不考虑缓冲区设置
EN

Stack Overflow用户
提问于 2011-03-28 23:20:04
回答 3查看 4.4K关注 0票数 9

我有一些正在编写单元测试的类,它们在其中有回声。我想抑制此输出,并认为ob_start()ob_clean()就足够了,但它们没有效果。

代码语言:javascript
复制
public function testSomething (){
    ob_start();
    $class = new MyClass();
    $class->method();
    ob_clean();
}

我还尝试了ob_start(false, 0, true);ob_end_clean()等变体,但都无济于事。

我遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2011-03-28 23:27:58

你可能想要这样的东西

代码语言:javascript
复制
<?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();
}
?>
票数 2
EN

Stack Overflow用户

发布于 2011-03-28 23:29:26

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

票数 0
EN

Stack Overflow用户

发布于 2018-07-23 04:16:02

下面的例子为我解决了这个问题。在不调用ob_end_clean()的情况下,缓冲区的内容将一直保留到脚本结束时才会被刷新。

代码语言:javascript
复制
ob_implicit_flush(false);
ob_start();    
/*
  ...
  ... do something that pushes countent to the output buffer
  ...
*/    
$rendered = ob_get_contents();
ob_end_clean(); // Needed to clear the buffer
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5461175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档