简单问题:
如果我启用输出缓冲...
ob_start();
$a = true;
header('Location: page.php');
$a = false;
ob_end_flush();
...将 $ a 注册为false,或者只是在不处理命令的情况下重定向页面(如果没有启用输出缓冲那样)?
谢谢!
答案 0 :(得分:8)
除非您在标题重定向后调用exit()
或die()
,否则$ a将为false,因为页面的其余部分将继续解析(使用或不使用缓冲)。
除非您有特殊原因,否则header("Location: ...");
应始终遵循上述功能之一,以免浪费cpu周期或内存。
答案 1 :(得分:2)
输出缓冲完全符合名称的推断,仅此而已。 仅缓冲输出,而不是变量赋值或对象状态。在这种情况下,$a
将在您提供的代码示例的末尾设置为false
。之后会发生什么事情取决于您的代码执行。
答案 2 :(得分:1)
它将重定向到page.php而不处理其余的命令。
*从技术上讲,除非你在(die,exit)之后专门停止,否则执行会继续执行标题调用。如果您只是设置变量并显示内容,您将永远不会注意到这一点,但如果您有更改数据库的命令,则很难找到这些更改的来源。