是否可以使用ob_start()/ ob_clean / ob_flush()在PHP中进行错误处理?

时间:2015-03-08 11:46:16

标签: php error-handling

在下面的php中进行错误处理是否可以接受?我对ob_start()/ob_clean()/ob_flush()不太熟悉,所以我想知道使用它们有什么不好的影响吗?例如,它们会影响性能吗?

<?php 
    function custorErr()
    {
        ob_clean();
        //echo error message and some other error handling...
        die();
    }
    set_error_handler("custorErr");
    ob_start();

?>
<!doctype html>
<!-- html here -->
<html>
    <head>
    </head>
    <body>
        demo
    </body>
</html>
<?php ob_flush();?>

如果这不是最佳做法,那么在出现错误时是否有更好的方法可以清除所有页面内容?

1 个答案:

答案 0 :(得分:0)

我猜你的方法会很好用,如果你想反复使用它,我认为你的方法是最好的。

另一个选择是将缓冲部分放在try/catch - 块中。如果出现问题,请清理输出缓冲区。如果您只想查看此错误的一个位置,我相信这种方法会更好。

<?php 
try {
    ob_start();
    ?>
    <!doctype html>
    <!-- html here -->
    <html>
        <head>
        </head>
        <body>
            demo
        </body>
    </html>
    <?php
    ob_flush();
}
catch {Exception $e) {
    ob_end_clean(); //OR ob_clean();
    echo 'error is ' . print_r($e, true);
}

有关清理输出缓冲的一些文档:

http://php.net/manual/en/function.ob-end-clean.php

http://php.net/manual/en/function.ob-clean.php