当我的脚本崩溃时,是否有一种安全的方法来清理输出缓冲区?

时间:2009-12-27 23:37:51

标签: php

我使用register_shutdown_function()让PHP在脚本崩溃的任何时候调用函数。在我将其记录到文件后,我想向用户显示一个漂亮的错误 - 抱歉消息。

为此,我想清理当前的输出缓冲区。我认为有一堆输出缓冲区(不确定),所以最大的问题是我是否可以在我的shutdown-callback函数中调用ob_end_clean()然后打印出我的错误页面?

至少,在mac(本地)的MAMP环境中,我可以在回调函数中回显一些东西,即使在文档中有些人声称这是不可能的。

但如果可行的话,我必须确保之前输出缓冲区的所有内容都得到了清理。另一方面,下一个问题是发送标题会发生什么?

1 个答案:

答案 0 :(得分:0)

register_shutdown_function()永远不应该生成可供用户查看的内容。它不是为了这个目的。可以保证套接字仍然是打开的 - 如果是,则HTTP文件流可能无法写入。

如果您想比默认值更优雅地处理错误,那么您需要编写并安装自己的错误处理程序:

 <?php

 set_error_handler('britney');

 function britney()
 {
    ob_clean;
    print "Whoops! I did it again<br />";
    debug_print_backtrace();
    ob_end_flush();
 }
 ..... your code goes here

℃。