可以将标题的输出延迟到浏览器,直到整个php脚本执行完毕为止?一旦代码的第一片被从PHP发送到web服务器PHP会延迟标题的输出,直到整个PHP脚本运行完毕?
回答
标头将被发送。
所以,你可以只是“不回什么”,直到脚本结束或use output buffering
来达到同样的事情
这是最专业的程序员会建议的方式,原因你应该总是做这样的您可以有效地管理错误和错误页面。
如果您的应用程序已经建成的脚本执行的话,我会建议你从头开始显示输出。
我通常管理输出的方式是用小模板的系统,模板的系统没有解析模板等,它只是需要传递一组数据,然后包括所需的模板。
你应该创建一个以$template->set(key[,value = true])
形式表示数据的类,然后显示一个函数,例如$template->display(filename)
,当此函数执行时,应该提取变量并包含模板文件,在完成之后然后致电exit(0)
,以免执行进一步的代码。
一个简单的模板系统可以像这样:
class Template
{
private $_data = array();
public function set($key,$value = true)
{
$this->_data[$key] = $value;
}
public function display($template)
{
//Check template exuists
extract($this->_data);
require_once $template;
exit(0);
}
}
然后用很简单的,像这样:
$template = new Template();
$template->set("title","Practical home Page");
$template->set("header","My Home Page");
$lists = array(
array(
"value" => "list item 1",
"id" => "list_item_1",
"class" => "item"
),
array(
"value" => "list item 2",
"id" => "list_item_2",
"class" => "item"
)
);
$template->set("menu",$lists);
$template->display("templates/homepage.php");
你也可以想阅读下面的答案,我以前回答!
-1:为什么?无论如何,这正是Zend Engine处理标题的方式。可以使用['标题()'](http://php.net/header),['headers_list()'](http://php.net/headers_list),和['header_remove()']( http://php.net/header_remove)随时可以使用标题。你的方法只会增加一层复杂性,如果你忘记了一步就会在后面咬你......我很抱歉,但是“专业程序员”不会因为它而增加复杂性。 – 2011-03-10 16:53:30
这不是复杂而是结构和组织,它不是为了它的缘故,它帮助管理逻辑和观点的分离。使用ob_start不会捕获已发送的头文件,使用ob_start可以捕获输出,如果在输出中发送了几个头文件,那么这违背了应用程序体系结构的标准。查看!=逻辑 – RobertPitt 2011-03-10 17:03:18
- 1. 流缓冲输出显示PHP脚本后执行完毕
- 2. jquery延迟事件,直到用户输入完毕
- 3. 延迟或阻止加载,直到php脚本/ javascript已完全执行
- 4. 直到脚本执行完毕,tee才会写入文件?
- 5. Jssor延迟标题输出
- 6. 运行脚本并执行PHP输出
- 7. Windows窗体 - 运行python脚本,重定向输出延迟
- 8. sleep()在php脚本中延迟整个页面
- 9. PHP脚本不会运行
- 10. PHP脚本不会运行
- 11. $ .get/$。getJSON不会延迟执行整个脚本?
- 12. Ajax直到另一个php脚本完成才会返回
- 13. PHP的回声输出没有延迟?
- 14. 从一个PHP脚本运行PHP脚本而不会阻塞
- 15. 睡眠()延迟输出,直到结束
- 16. 如何延迟完成位传输直到传输完成?
- 17. 在php中延迟加载java脚本
- 18. PHP脚本延迟短信发送?
- 19. cronjob基于PHP输出延迟
- 20. 如何使用延迟脚本的执行直到完成其他事情?
- 21. 推迟执行PHP脚本
- 22. 会话保存延迟php
- 23. 延迟脚本,直到它执行ping到IP不睡觉
- 24. Aptana 3 Studio的调试控制台延迟输出,直到脚本终止
- 25. 在ajax/jquery中运行完整的php脚本
- 26. 龙PHP脚本不运行完全
- 27. PHP运行一个shell脚本到scp
- 28. PHP,暂停脚本执行,直到一个事件由另一个正在运行的脚本发出信号?
- 29. 从php运行shell脚本并查看完整进度?
- 30. PHP脚本并行运行多个php脚本
的可能重复的[什么是输出缓冲?](http://stackoverflow.com/questions/2832010/what-is-output-buffering) – Jon 2011-03-10 16:27:24
http://php.net/manual/ EN/function.ob-start.php – kjy112 2011-03-10 16:27:56
@乔恩:**这是不是重复**输出缓冲是答案肯定的,但这些都是**两个完全不同的问题**。 – 2011-03-10 16:31:26