我希望每个人的假期都很顺利。
这里有另一个与PHP相关的问题。我在我的脚本中使用输出缓冲区,因为我最近学到的是一个无效的原因(所以我可以在后面的脚本中传递头文件)。我现在意识到我应该将所有输出存储在变量或其他类型的存储中,直到我准备在脚本结束时输出而不是使用输出缓冲区。不幸的是,我已经将这些函数和html的自发输出编码到我的页面中了。我希望能够在脚本的第2版中修复此问题,因为我有严格的截止日期来满足此版本。
对手头的问题。我打算这样做,但显然die()和exit()函数对输出缓冲区效果不佳?我在所有错误消息之后都有exit(),而不是在那时结束执行,似乎脚本由于输出缓冲而继续运行。我已经通过删除输出缓冲区和exit()函数按预期工作来测试这个假设。
有没有办法改变这种行为,还是应该回到绘图板并开始更换我的旧页面?另外,有人可以向我解释为什么我们应该保持输出直到最后?我总是对学习感兴趣。
先谢谢大家!享受2010年的最后几天!
答案 0 :(得分:1)
虽然我会将更多更抽象的问题留给比我更聪明的头脑,但我建议您创建一个包装器exit()
函数,以便在出现错误时简化代码。
即 -
if(!$good)
{
trigger_error('bleh', E_USER_WARNING);
errorExit();
}
function errorExit()
{
ob_flush();
exit();
}
并用该函数调用替换所有出口,这样刷新缓冲区,程序将在适当的时间退出。
答案 1 :(得分:1)
标题与实际页面内容之间的差异基本上只是它们出现的位置。 顾名思义,标题位于输出的开头。之后,发送两个回车/输入(输入符号),之后的所有内容都被认为是内容。 因此,如果您回显某些内容然后想要更改标题,则无法完成。内容部分已经关闭标题部分。您将以新标题发送的内容现在显示为纯文本(如果PHP解释器不会阻止您,它会这样做。)
至于问题的其他部分,ob_flush
是帕特里克所说的一个很好的解决方案。