PHP输出缓冲?什么是最佳做法?

时间:2010-07-19 09:34:10

标签: php

继我的previous question之后,当我想要缓存PHP输出直到我执行所有处理时,最好的方法是什么?我想缓冲以留给我自己选择重定向到错误页面,这是我输出后无法做到的。

那么,最佳做法是什么?使用变量$output并继续追加它,然后在结尾输出它?或者使用ob_str()等?

是否存在选择代码可维护性原因而不是另一个的性能?或者只是个人的优先感?

3 个答案:

答案 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)

编写良好的代码不需要输出缓冲。我的意思是:首先,你做所有的处理,没有任何输出。业务逻辑,验证,数据库访问 - 这种东西。完成此操作后,您可以关闭数据库连接,会话等,因为您所做的只是根据上面收集的数据创建输出。
这种方法通常会产生更好的可维护代码。

相关问题