Материалы
[:NetFAQ://]


Поиск

[:NetFAQ://]


Партнеры
Хостинг от Park-Web

www.popularsite.ru
[:NetFAQ://]


Реклама
[:NetFAQ://]


PHP. Допиливаем Flush напильником.

PHP:/ Допиливаем Flush() напильником.

Зачем это надо. Вывод данных из php скрипта идет не потоком, а некоторыми порциями, то есть буфферезировано. Если, к примеру, вам необходимо отдать всю информацию прямо сейчас. А в случаях с большими обьемами обработки, это актуально. Вы должны вызвать комманду flush(). Это в теории. А на практитке

Это не работает. Как ни странно. После недолгих раздумий и копания в мануалах, было найдено несколько преград.

Первым на пути к юзверю оказался Апач, который зачастую сам использует выходной буфер. Второй на пути, оказалась компрессия, которая сжимает все данные, исходящие с сервера, и позволяет нам экономить на трафике. Ну и на закуску, нас так же не понял браузер, который зачастую сам накапливает некоторый объем информации, прежде чем выдать её конечному пользователю.

Так как все преграды стали видны, то дело за малым.

Во первых выставляем два параметра, которые отключат сжатие трафика и выходной буфер.

ini_set('output_buffering', 0);
ini_set('zlib.output_compression', 0);

Вроде 1-0 в нашу пользу. Но дальше выясняется, что заветная функция, работает не так как нам надо. Пилим дальше.  После некоторых размышлений, было принято решение заменить flush на вариант с "ручной" буфферизацией вывода. Так мы сможем полностью управлять выводом.

ob_start(); // включаем буфер
echo "Генерим нужные данные";
ob_flush(); // отдаем
ob_end_flush();

Теперь работает.



Опубликовано: 2010-03-10 14:48:39 shadx

Комментарии

Andrei пасибо за внятное обьяснение брат по пхп
иван да ништяк когда объяснения программистов есть к функциям PHP

Оставить комментарий:

Имя:
Почта:
Комментарий:
Что написанно на картинке;)
[:NetFAQ://]

Справочники
[:NetFAQ://]


FreeSoftware
Графика
Аудио&Видео
CD&DVD
Офис
Системные утилиты
Антивирусы
Игры
Разное
[:NetFAQ://]


Магазин
Вавилон 5 - второй сезон
Вавилон 5 - второй сезон
[:NetFAQ://]


Статистика


[:NetFAQ://]


FAQ Новости Блог RSS Задать вопрос