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?

Foi útil?

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

Use o comando flush()

Eu uso

flush(); @ob_flush();

após a saída.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top