PHP отображает содержимое при загрузке страницы - PullRequest
6 голосов
/ 18 июня 2011

Итак, я экспериментирую с PHP / Apache.Допустим, у меня есть этот код.

<div>DIV 1</div>
<?php sleep(2); ?>
<div>DIV 2</div>
<?php sleep(2); ?>
<div>DIV 3</div>
<?php sleep(2); ?>
<div>DIV 4</div>
<?php sleep(2); ?>

По какой-то причине на моем локальном веб-сервере apache все данные появляются в браузере сразу после того, как все 4 sleep () были выполнены (8 секунд).

Однако, если я запускаю его на сервере моего хоста, данные передаются в браузер в реальном времени.Как в ... появляется div1, через 2 секунды появляется div 2 и т. Д.

Почему это так?Это какая-то настройка в Apache?

1 Ответ

6 голосов
/ 18 июня 2011

Нет, это может быть настройка в php.

На вашем локальном сервере output_buffering включен в вашем файле php.ini.

Вы можете отключить его, установив:

output_buffering = off

Чтобы гарантировать, что контент отправляется в браузер каждый раз, когда используется эхо-оператор, добавьте:

implicit_flush = on

Вы также можете установить размер буфера, задав значение output_buffering.

output_buffering = 4096

здесь размер буфера будет 4 КБ.

Буферизация вывода говорит php сохранять в памяти все данные, которые будут отправлены в браузер, до тех пор, пока не будет принята инструкция flush () в вашем коде,буфер переполнен, или это конец скрипта.

Вот полная ссылка на выходной буфер с php.net: выходной буфер php

...