Принцип работы буфферизированного вывода в php?

Здравствуйте!

Начал изучать систему функции ob_* в php. Есть вопрос по нижеследующему коду:
<?php

ob_start();

?>

<html>
<body>
<p>It's like comparing apples to oranges.
</body>
</html>

<?php
$t = "";
for($i=0;$i<2500000;$i++){
	$t .= sqrt($i);
}
echo $t;
//ob_end_flush();

?>

Я намеренно закомментировал ob_end_flush(), так как если я правильно понял ob_start() буфферирует вывод, а ob_end_flush() выводит весь этот буфер. То есть на браузер ничего не должно выводится, не так ли?

Но у меня выводится

С Уважением,
Алмик
  • Вопрос задан
  • 2328 просмотров
Пригласить эксперта
Ответы на вопрос 1
nowm
@nowm
Чтобы ничего не выводилось, нужно вызывать функцию ob_end_clean.

Я обычно с буфером так работаю:

ob_start();

// Тут какой-нибудь вывод

// В переменную $output заносится весь буфер, и её можно потом где-то использовать
$output = ob_get_contents();

// Очистка буфера
ob_end_clean();


Хотя, можно ещё проще делать: вместо связки ob_get_contents + ob_end_clean можно использовать ob_get_clean, которая очищает буфер и при этом возвращает его содержимое.

ob_start();

// Тут какой-нибудь вывод

// В переменную $output заносится весь буфер, и её можно потом где-то использовать.
// При этом происходит очистка буфера.
$output = ob_get_clean();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы