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

Статус
В этой теме нельзя размещать новые ответы.

асс

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

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

но в браузере попадет сразу все что есть в текстовом файлике.

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

Может не правильно обьяснил, хотя помоему так.
 
Боиграться со сбросом буфера (функции flush и подобные).
В линуксе проблем нет, в винде есть небольшие заморочки.
 
После echo пиши ob_flush(); flush();
 
Может чего не понял. Но ведь PHP формирует весь вывод, даже если и по строчкам.
Так что ничего удевительного, что в итоге ты увидишь весь файл.
 
jID, ты прав - ты не понял.
Выводить можно и построчно.
 
PHP_Master, про сброс буферов всё понятно.
Но...
Если делать на PHP скрипт, который должен выполняться бесконечно (пока не выключат), то вероятно в этом есть рациональное зерно.
Но если обычно писать, как указал автор, для вывода в браузер, то в итоге всё равно выведится всё содержимое файла.
А нащёт построчно. Чем не нравится file() ?
Получается массив (с большими файлами, конечно, неудобно), где по строчкам всё разбито.
 
Насколько я понял, проблема в том, что нужно после чтения строки и перед выводом ее в браузер не забыть обработать прочитанную строку функцией nl2br(). Она заменит "\n" на html тэг BR. Тогда все строки будут выводится с новой строке браузера, а не все вместе как сейчас.

И fflush($fh) после вывода строки в браузер - это вызовет немедленное ее отображение в браузере.
 
Но если обычно писать, как указал автор, для вывода в браузер, то в итоге всё равно выведится всё содержимое файла.
А нащёт построчно. Чем не нравится file() ?
Допустим в файле миллион строк, будешь ждать пока всё загрузиться в оперативку (если сможет туда поместиться)?
 
Я так понимаю что автор имел ввиду следующее! тобы строки выводились на экран с некторой паузой, может опробовать в конце цикла вставить sleep() ? Но это только мои догадки!
 
Приветствую.
Как вывести в браузер каждое слово
так чтоб за один проход цикла
выводилось слово.
Не совсем это понятно. Обьясните немного подробнее, что именно Вам нужно. Нужно выводить по одному слову и при обновлении страницы выводилось следующее слово? или как?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху