PHP - 发送当前输出缓冲区

PHP - Sending the current output buffer

提问人:Madara's Ghost 提问时间:8/5/2011 最后编辑:Madara's Ghost 更新时间:8/5/2011 访问量:271

问:

我正在制作一个PHP IRC机器人,它工作得很好。

不过,我想做的是有一个实时调试选项,这意味着我需要实时查看从操作员发送到机器人的命令。问题是,只要机器人在运行,就不会发送任何输出,即使 I 、 或 .echoprintfvar_dump

所以我的问题是,我怎样才能强制PHP在不等待逻辑完成的情况下发送当前输出缓冲区(因为从理论上讲,它永远不会:P完成)

编辑:或者似乎不起作用,请参阅这个简单的示例: http://codepad.viper-7.com/ks7zEyflush()ob_flush()

PHP 的IRC

评论


答:

2赞 genesis 8/5/2011 #1

使用 flush();

评论

0赞 Madara's Ghost 8/5/2011
恐怕不起作用。我尝试了一个带有 sleep(2) 的更简单版本;
1赞 TJHeuvel 8/5/2011 #2

您正在寻找ob_flush

评论

0赞 Madara's Ghost 8/5/2011
恐怕不起作用。我尝试了一个更简单的版本sleep(2);
0赞 TJHeuvel 8/6/2011
你一开始有没有调用ob_start()?
0赞 Madara's Ghost 8/6/2011
我确实有。我开始认为PHP不是问题,因为即使在php.ini中设置后,我仍然有同样的问题。output_buffering=Off
1赞 nobody 8/5/2011 #3

只需将其放在页面顶部即可:

while( ob_get_level() > 0 ) {
    @ob_end_flush();
}
@ob_implicit_flush();

评论

0赞 Madara's Ghost 8/5/2011
恐怕不起作用。我尝试了一个带有 sleep(2) 的更简单版本;