继我的previous question之后,当我想要缓存PHP输出直到我执行所有处理时,最好的方法是什么?我想缓冲以留给我自己选择重定向到错误页面,这是我输出后无法做到的。
那么,最佳做法是什么?使用变量$output
并继续追加它,然后在结尾输出它?或者使用ob_str()等?
是否存在选择代码可维护性原因而不是另一个的性能?或者只是个人的优先感?
答案 0 :(得分:3)
对我来说,我这样做了:
<?php
ob_start();
//do your process here
if($error)
{
ob_end_clean();
header('Location: /some/path.php');
exit;
}
ob_end_flush();
?>
答案 1 :(得分:2)
我用ob_start();
(http://php.net/manual/en/function.ob-start.php)
然后通常会发送到浏览器的任何内容(标题除外)都会存储在缓冲区中,直到我将其关闭。当我想输出或操作缓冲区时,我这样访问它:
$buffer = ob_get_clean();
(http://php.net/manual/en/function.ob-get-clean.php)
这里有很多其他的缓冲选项:
http://www.php.net/manual/en/ref.outcontrol.php
这是我认为最好的方法,因为您不必继续向缓冲区添加项目;只要缓冲区打开,PHP就会自动捕获所有内容。
答案 2 :(得分:1)
编写良好的代码不需要输出缓冲。我的意思是:首先,你做所有的处理,没有任何输出。业务逻辑,验证,数据库访问 - 这种东西。完成此操作后,您可以关闭数据库连接,会话等,因为您所做的只是根据上面收集的数据创建输出。
这种方法通常会产生更好的可维护代码。