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); }
a) что делает ob_start () точно. я понял, что это приведет к буферизации вывода. со ссылкой на приведенный выше код, что будет полезно, если я использую ob_start () при попытке установить соединение с базой данных. какие выходные данные он будет буферировать?
Спасибо..
Обычно php отправляет весь текст, не включенный в <?php ... ?>
, Все эхо, все выводится на выход. Который отправляется в err … output: http-сервер (который отправляет его клиенту), консоль и т. Д.
После ob_start этот вывод сохраняется в выходном буфере, поэтому вы можете позже решить, что с ним делать.
Это не влияет на соединение db. Он касается текста (в основном), созданного php.
Некоторые PHP-программисты помещают ob_start()
в первую строку всего своего кода *, и я вполне уверен, что это происходит здесь.
Это означает, что если они получат половину вывода страницы и решили, что есть ошибка, они могут очистить буфер и вывести страницу с ошибкой. Это также означает, что при попытке отправить HTTP-заголовки вы никогда не получите ошибки «не отправили заголовки, вывести уже запущенные».
Есть несколько законных причин для этого, но я бы воспринял это как знак того, что они посредственные программисты, которые не хотят структурировать свой код в последовательном порядке – то есть они должны работать, если есть ошибки или заголовки для отправки, прежде чем они начнут показывать страницу. Не копируйте эту привычку.
(* Что делает эту легкую привычку падать в том, что если буферизация вывода по-прежнему включена, когда конец скрипта достигнут, буфер отправляется пользователю, поэтому им не нужно беспокоиться о соответствующем концевом заявлении)
в первую очередь буферизация полезна для размещения http-заголовков (функция заголовка) в любой строке кода. например, файлы cookie сеанса. без ob_start вы не сможете добавить какой-либо HTTP-заголовок в ответ, если вы уже отправили некоторые данные, например, с функциями эха или печати
В этом конкретном коде ob_start
кажется бесполезным. Преимущество буферизации вывода заключается в следующем коде или не существует. `В общем, обратитесь к руководству PHP об ob_start .