PHP показывает вывод foreach на экран для каждого элемента

StackOverflow https://stackoverflow.com/questions/1201110

  •  05-07-2019
  •  | 
  •  

Вопрос

Одна вещь, которую я заметил в php, это то, что на экран ничего не выводится, пока скрипт не перестал работать. Для проекта, над которым я работаю, я добавляю список из более чем 100 элементов, и он выполняет HTTP-запрос для каждого элемента, а по завершении показывает страницу со статусом каждого элемента, неудачей и т. Д.

Я хочу знать, есть ли способ вывести результаты каждого цикла 'foreach' по мере их появления? Таким образом, пользователь, смотрящий на экран, видит магию, происходящую по одной строке за раз или после, скажем, 5 строк.

Я когда-либо видел, чтобы это делалось только с запросами типа Ajax. Может быть, это то, что я должен искать вместо этого? Кто-нибудь может указать мне на функцию php, которая делает это или это невозможно?

Это было полезно?

Решение

Может быть лучше сохранить все выходные данные скрипта в буфере, а затем очистить буфер при необходимости.

Например:

<?php

if (ob_get_level() == 0) ob_start();

$test = Array('one','two','three','four');
foreach ($test as $key=>$val)
{
    echo $test;
    ob_flush();
    flush();
}

ob_end_flush();

?>

Убедитесь, что у вас отключен mod_gzip!

Другие советы

flush () следует сделать это, или вы можете посмотреть на все функции буферизации вывода

Используйте команду flush () команда

Я использую

flush(); @ob_flush();

после вывода.

scroll top