关于我之前的问题,当我想要缓存PHP输出直到所有处理完成时,最好的方法是什么?我希望进行缓冲以留给自己重定向到错误页面的选项,这在任何输出之后都不能做到。
那么,最佳实践是什么?使用变量$output
并不断追加,然后在最后输出它?还是使用ob_str()等函数?
是否有性能或代码可维护性原因导致选择其中一种而不是另一种?还是只是个人喜好?
关于我之前的问题,当我想要缓存PHP输出直到所有处理完成时,最好的方法是什么?我希望进行缓冲以留给自己重定向到错误页面的选项,这在任何输出之后都不能做到。
那么,最佳实践是什么?使用变量$output
并不断追加,然后在最后输出它?还是使用ob_str()等函数?
是否有性能或代码可维护性原因导致选择其中一种而不是另一种?还是只是个人喜好?
对我来说,我做了这个:
<?php
ob_start();
//do your process here
if($error)
{
ob_end_clean();
header('Location: /some/path.php');
exit;
}
ob_end_flush();
?>
我使用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就会自动捕获所有内容,不需要不断地添加项目到缓冲区中。