2012-05-03 3 views
0

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

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

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

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

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

+0

Почему бы не ob_start, а затем просто назовите [ob_flush] (http://php.net/manual/en/function.ob-flush.php) регулярно в вашей петле – Anigel

+0

попробовал именно это. не вмятина. –

ответ

0

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

+0

Что касается «уменьшения размера буфера в вашем php.ini», я скорее не трогаю php.ini. Это можно сделать на уровне страницы? –

+0

почти любое значение в php.ini может быть изменено в вашем текущем скрипте функцией ini_set. – StackOverflowed

 Смежные вопросы

  • Нет связанных вопросов^_^