使用ob_flush输出数据会产生通知

时间:2015-02-07 13:17:45

标签: php

我有一个大约需要400秒才能完成的脚本。我也正在使用此函数输出日志,因为脚本循环执行某些任务。

function CLI_LOG($message){
    echo $message."\n";
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
}

在我的script.php的顶部,我有ob_start();

这在浏览器中运行良好!虽然我在命令行上使用

运行它

php -f script.php

每次我使用该功能时,我都会收到这两个错误

Notice: ob_flush(): failed to flush buffer. No buffer to flush in script.php on line 127

PHP Notice: ob_flush(): failed to flush buffer. No buffer to flush in script.php on line 127

第127行保存了这段代码

ob_flush();

我甚至试图使用error_reporting(0);error_reporting(E_ALL & ~E_NOTICE);来阻止这些错误而没有运气?

1 个答案:

答案 0 :(得分:1)

在ob_end_flush()之后执行ob_flush()但ob_end_flush()已经结束缓冲区...所以你没有更多的缓冲区。

function CLI_LOG($message){
    echo $message."\n";
    ob_flush();
    flush();
}

如果你不结束前一个缓冲区,则无需启动另一个缓冲区。