PHP mostrando a saída de foreach para a tela, para cada item
Pergunta
Uma coisa que tenho notado com php, é que nada é saída para a tela até que o script parou de funcionar. Para o projeto que estou trabalhando eu alimentar em uma lista de mais de 100 itens e ele executa uma solicitação HTTP para cada item e, quando terminar, mostra uma página com o status de cada item, falha do sucesso etc.
O que eu quero saber é se existe uma maneira de saída os resultados de cada loop 'foreach' como eles acontecem? Assim, o usuário visualiza o ecrã vê a magia acontecendo uma linha de cada vez ou após digamos 5 linhas.
Eu só vi este feito com os pedidos do tipo Ajax, é que o que eu deveria estar olhando para fazer em vez disso, talvez? Pode apontar ninguém me para uma função php que faz isso ou não é possível?
Solução
Pode ser melhor para armazenar toda a saída de script em um tampão, em seguida, liberar o buffer quando necessário.
Por exemplo:
<?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();
?>
Certifique-se de que você tem mod_gzip disabled!
Outras dicas
flush()
deve fazê-lo, ou você pode olhar para todas as funções buffer de saída
Eu uso
flush(); @ob_flush();
após a saída.