Светлана Глубокова
Светлана Глубокова

Как работает output buffering d PHP?

Здравствуйте, коллеги!
До этого никогда не работал с буферизацией вывода, и вот понадобилось... думал щас сделаю все за пять минут, в результате сижу уже полдня, облазил пол интернета и понял что я ничего не понял ))

в php.ini
output_buffering = 4096
implicit_flush = Off

Ожидаю увидеть в выводе:

How are you?
I am fine

Не фига... выдаёт:

I am fine
How are you?

Подскажите, где туплю?

РР
Рустам Расулов

Буферизируется ВЕСЬ вывод - хоть внутри php-кода, хоть вне его. Так что "How are you?" тоже попадает в буфер.

У буферизации два основных назначения:
1. Буферизация позволяет не блокировать работу с http-заголовками, куками, сессиями.
2. Буферизация позволяет производить постобработку выводимых данных. Это, например, используется во вложенных шаблонах.

Параметр implicit_flush не имеет отношения к output buffering - он управляет буферизацией на уровне файловой системы. Подробности: https://www.php.net/manual/ru/outcontrol.configuration.php#ini.implicit-flush

ЮС
Юленька Сидорова

ob_start();
echo "hello world";
$content = ob_get_contents();
ob_end_clean();
echo "123";
echo $cotnent:
Вывод будет:
123
Hello world
----
Так понятней ?

Похожие вопросы
Нужна помощь с php
Как создать пользовательскую команду на PHP?
Проблема со временем в php
Буфер обмена в PHP
Как решить эту задачу на PHP?
Может ли программа на PHP работать в среде Windows, для какой OC предназначен в первую очередь язык PHP?
Использование cookie в php
Как решить эту задачу на PHP?
Не работает функция mail в php.
Не работает COOKIE в PHP