Как работает построчный вывод в браузер, на PHP?

Тема в разделе "PHP", создана пользователем асс, 22 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Приветствую.
    Возник такой вопрос.
    есть к примеру файлик в нем
    есть слова. каждое слово с новой строки.
    Как вывести в браузер каждое слово
    так чтоб за один проход цикла
    выводилось слово.

    по идее
    код должен выводить каждую строчку
    PHP:
    $file="domen.txt";
    $fh fopen($file"r");
     while (!
    feof($fh)) {
    echo 
    fgets($fh);
    но в браузере попадет сразу все что есть в текстовом файлике.

    А нужно чтоб одна итерация одно слово.

    Может не правильно обьяснил, хотя помоему так.
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Боиграться со сбросом буфера (функции flush и подобные).
    В линуксе проблем нет, в винде есть небольшие заморочки.
     
  3. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    После echo пиши ob_flush(); flush();
     
  4. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Может чего не понял. Но ведь PHP формирует весь вывод, даже если и по строчкам.
    Так что ничего удевительного, что в итоге ты увидишь весь файл.
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    jID, ты прав - ты не понял.
    Выводить можно и построчно.
     
  6. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    PHP_Master, про сброс буферов всё понятно.
    Но...
    Если делать на PHP скрипт, который должен выполняться бесконечно (пока не выключат), то вероятно в этом есть рациональное зерно.
    Но если обычно писать, как указал автор, для вывода в браузер, то в итоге всё равно выведится всё содержимое файла.
    А нащёт построчно. Чем не нравится file() ?
    Получается массив (с большими файлами, конечно, неудобно), где по строчкам всё разбито.
     
  7. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Насколько я понял, проблема в том, что нужно после чтения строки и перед выводом ее в браузер не забыть обработать прочитанную строку функцией nl2br(). Она заменит "\n" на html тэг BR. Тогда все строки будут выводится с новой строке браузера, а не все вместе как сейчас.

    И fflush($fh) после вывода строки в браузер - это вызовет немедленное ее отображение в браузере.
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Допустим в файле миллион строк, будешь ждать пока всё загрузиться в оперативку (если сможет туда поместиться)?
     
  9. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Я так понимаю что автор имел ввиду следующее! тобы строки выводились на экран с некторой паузой, может опробовать в конце цикла вставить sleep() ? Но это только мои догадки!
     
  10. ex3mer

    ex3mer Создатель

    Регистр.:
    19 ноя 2007
    Сообщения:
    21
    Симпатии:
    5
    Не совсем это понятно. Обьясните немного подробнее, что именно Вам нужно. Нужно выводить по одному слову и при обновлении страницы выводилось следующее слово? или как?
     
Статус темы:
Закрыта.