session_start();
ob_start();
$hasDB = false;
$server = 'localhost';
$user = 'user';
$pass = 'pass';
$db = 'acl_test';
$link = mysql_connect($server,$user,$pass);
if (!is_resource($link)) {
$hasDB = false;
die("Could not connect to the MySQL server at localhost.");
} else {
$hasDB = true;
mysql_select_db($db);
}
Run Code Online (Sandbox Code Playgroud)
a)ob_start()究竟做了什么.我明白它会打开输出缓冲.参考上面的代码,如果我在尝试与数据库建立连接时使用ob_start(),将会有什么好处.它将缓冲哪些输出数据?
谢谢..
小智 7
通常,php会将未包含的所有文本<?php ... ?>,所有回声,所有打印件发送到输出.哪个发送到错误...输出:http服务器(将其发送到客户端),控制台等.
在ob_start之后,此输出保存在输出缓冲区中,因此您可以稍后决定如何处理它.
它不会影响数据库连接.它处理由php生成的文本(大多数).
一些PHP程序员把ob_start()所有代码放在第一行*,我很确定这就是这里发生的事情.
这意味着如果他们在输出页面中途并确定存在错误,他们可以清除缓冲区并输出错误页面.这也意味着在尝试发送HTTP标头时,您永远不会收到"无法发送标头,输出已启动"错误.
有一些合理的理由可以做到这一点,但我认为这是一个标志,他们是平庸的程序员,他们不想以一致的顺序构建他们的代码 - 即如果有错误或标题他们应该正在解决在开始呈现页面之前发送.不要复制这个习惯.
(*这使得这容易陷入的习惯是,如果在到达脚本结束时仍然打开输出缓冲,则缓冲区被发送给用户,因此他们不需要担心匹配的结束语句)
| 归档时间: |
|
| 查看次数: |
14522 次 |
| 最近记录: |