ускорение вывода в клиентском браузере

Когда я обрабатываю большие записи в цикле while, и каждая итерация цикла выводит некоторую информацию для экрана, я всегда смотрю на старый экран. Все, что я вижу, это вращающийся значок активности, который указывает на то, что сервер обрабатывает некоторые данные.

У меня нет проблем с тайм-аутом, потому что я уже получил set_time_limit (3600); в верхней части скрипта. Меня смущает только скучный экран.

В ASP (откуда я пришел) я запускаю response.flush, и это решает проблему. Кстати, в ASP я всегда включаю буферизацию с помощью response.buffer=true. В PHP это очень спорная область, я до сих пор не понимаю, следует ли включать или выключать ob.

Здесь я не включаю буферизацию ob_start, вопрос в том, почему эхо не отправляет содержимое в браузер?

Что вы делаете, чтобы браузер постепенно получал фрагменты html по мере того, как цикл while на сервере обрабатывает информацию?


person Average Joe    schedule 03.05.2012    source источник
comment
Почему бы не использовать ob_start, а затем просто регулярно вызывать ob_flush в своем цикле?   -  person Anigel    schedule 03.05.2012
comment
пробовал именно так. не вмятина.   -  person Average Joe    schedule 03.05.2012


Ответы (1)


отключить буферизацию вывода, уменьшить размер буфера в вашем php.ini, использовать неявный сброс или явный сброс с помощью flush(). Но если вам нужно отобразить большой объем данных, возможно, лучше разбить содержимое на страницы или использовать сценарий командной строки, когда обработка занимает слишком много времени.

person MonkeyMonkey    schedule 03.05.2012
comment
что касается уменьшения размера буфера в вашем php.ini, я предпочитаю не трогать php.ini. Можно ли это сделать на уровне страницы? - person Average Joe; 03.05.2012
comment
почти любое значение в php.ini может быть изменено в вашем текущем скрипте с помощью функции ini_set. - person StackOverflowed; 24.10.2012