2

我希望每个人的假期都过得很好。

另一个与 PHP 相关的问题在这里。我在我的脚本中使用了输出缓冲区,因为我最近了解到这是一个无效的原因(所以我可以稍后在脚本中传递标题)。我现在意识到我应该将所有输出存储在一个变量或某种其他类型的存储中,直到我准备好在脚本末尾输出而不是使用输出缓冲区。不幸的是,我已经将这些函数和 html 的自发输出编码到我的页面中。我希望能够在脚本的版本 2 中解决这个问题,因为我有严格的截止日期来满足这个版本。

对于手头的问题。我正计划这样做,但显然 die() 和 exit() 函数在输出缓冲区中效果不佳?在我所有的错误消息之后,我都有 exit() ,而不是在那个时候结束执行,似乎脚本由于输出缓冲区而继续运行。我已经通过删除输出缓冲区测试了这个假设,并且 exit() 函数按预期工作。

有没有办法改变这种行为,或者我应该回到绘图板并开始替换我的旧页面?另外,有人可以向我解释为什么我们应该保持输出到最后吗?我总是对学习很感兴趣。

提前谢谢大家!享受 2010 年的最后几天吧!

4

2 回答 2

1

页眉和实际页面内容的区别基本上只是它们出现的位置。顾名思义,标题位于输出的开头。之后发送两个回车/回车(输入符号),之后的所有内容都被认为是内容。因此,如果您回显某些内容然后想要更改标题,则无法完成。内容部分已经关闭了标题部分。您将作为新标头发送的内容现在将显示为纯文本(如果 PHP 解释器不会阻止您,它会阻止您)。

至于问题的另一部分,ob_flush正如帕特里克所说,这是一个很好的解决方案。

于 2014-05-28T15:22:29.973 回答
1

虽然我会将更复杂和更抽象的问题留给比我更聪明的人,但我建议您创建一个包装exit()函数以在出现错误时简化代码。IE-

if(!$good)
{
    trigger_error('bleh', E_USER_WARNING);
    errorExit();
}

function errorExit()
{
    ob_flush();
    exit();
}

并用该函数调用替换所有退出,这样缓冲区就会被刷新,程序将在适当的时间退出。

于 2010-12-30T04:31:16.427 回答