2012-04-19 2 views
0

Возможно ли, что print_r() отображается в реальном времени. Под живым я имею в виду, когда скрипт выполняется. Я не хочу ждать окончания скрипта, чтобы он отображался. Надеюсь, я поняла. Заранее благодарю за ваши ответы. Приветствия. MarcPHP - Как отобразить print_r() live

+2

Так оно и происходит по умолчанию, если вы или PHP или пользовательский агент не захотите буферировать ваш вывод. – Jon

+0

Да, просто не печатайте с ним слишком большие массивы, это занимает много времени в нескольких миллионах записей. – ewanm89

+0

.. или веб-сервер. –

ответ

2

Вероятно, вы используете PHP через веб-сервер, такой как Apache.

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

HTTP не был сделан для «живого» показывать это больше похоже на статические страницы, поэтому люди придумали «АЯКС» и Javascript для опроса измененных/живых событий после того, как страница была загружен.

Что вы можете сделать:

  1. Чтобы убедиться, что данные из PHP отправляется на веб-сервер, вы можете использовать команду flush()
    Существует также установка PHP называется implicit_flush вы можете посмотреть вверх.
  2. Веб-сервер, скорее всего, использует gzip/mod_gzip для сжатия вывода. Вам нужно отключить это поведение.
    Может быть, это сделает: @apache_setenv('no-gzip', 1);
  3. Добавить еще некоторое содержание, чем просто чистый текст, если поместить данные в простой «стол», включая </table> это более вероятно, браузеры будут отображать его во время загрузки.
  4. Посмотрите на PHP INI для этого:
    output_buffering = Off
    zlib.output_compression = Off
    Вы можете сделать это во время выполнения тоже (@ini_set('zlib.output_compression', 0);)
  5. Некоторые браузеры будут отображать только данные, если они получают определенное количество байтов.
    Если я помню, это может помочь 256 байт.
    str_repeat(" ", 256); (или что-нибудь еще)

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

+0

Спасибо большое за это подтверждение – Marc

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