PHP4.0 fornece uma coleção de funções de buffer de saída. O suporte ao buffer de saída permite escrever funções que envolvem funções em buffers compactados. O suporte ao buffer de saída no PHP4 permite que as informações do cabeçalho HTML sejam armazenadas independentemente de o corpo HTML ser gerado. Mas em PHP, as informações do cabeçalho ((header(), tipo de conteúdo e cookies) não são armazenadas em buffer.
No processo de utilização do PHP, é inevitável o uso de cabeçalho e
setcookie duas funções, essas duas funções enviarão um pedaço de informação do cabeçalho do arquivo para o navegador, mas se houver alguma saída (incluindo saída vazia, como espaços, retornos de carro e feeds de linha) antes de usar essas duas funções, um erro será prompted , a informação do prompt é a seguinte: "Cabeçalho tinha tudo pronto para enviar por"! . Várias funções para controle de buffer foram adicionadas ao PHP 4.0. O uso dessas funções pode nos ajudar a resolver muitos problemas.
Nome da função Formato da função Descrição da função
Flush flush() gera o conteúdo do buffer e exclui o buffer. Esta função é frequentemente usada e é muito eficiente.
ob_start void ob_start(void) Abra o buffer de saída. Quando o buffer está ativo, todas as informações de cabeçalho que não sejam de arquivo do programa PHP não são enviadas, mas são salvas no buffer interno. Para gerar o conteúdo do buffer, você pode usar ob_end_flush() ou ob_end_clean() para gerar o conteúdo do buffer.
ob_get_contents string ob_get_contents(void) Retorna o conteúdo do buffer interno. Esta função retorna o conteúdo do buffer atual ou FALSE se o buffer de saída não estiver ativo.
ob_get_length int ob_get_length(void) Retorna o comprimento do buffer interno. Esta função retorna o comprimento do buffer atual como ob_get_contents, se o buffer de saída não estiver ativo; Retorna FALSO.
ob_end_flush void ob_end_flush(void) Envia o conteúdo do buffer interno para o navegador e fecha o buffer de saída. Esta função envia o conteúdo do buffer de saída (se houver).
ob_end_clean void ob_end_clean(void) Exclua o conteúdo do buffer interno e feche o buffer interno. Esta função não gera o conteúdo do buffer interno!
ob_implicit_flush void ob_implicit_flush ([int flag]) Ativa ou desativa a liberação absoluta Qualquer um que tenha usado Perl sabe o significado de $|=x. Esta string pode abrir/fechar o buffer, e a função ob_implicit_flush é a mesma. o padrão é fechar a área do buffer, ativar a saída absoluta.
2. Exemplo de análise:
1. Use funções de controle de buffer para evitar erros no envio de informações no cabeçalho do arquivo.
<? //prompt PHP
ob_start(); //Abre o buffer
echo "Bem-vindo /n";/saída
header("location:next.php"); //Redireciona o navegador para next.php
?>
Se ob_start for removido, o PHP exibirá um erro na linha 4 do arquivo e a mensagem de erro será "O cabeçalho já estava pronto para ser enviado por". buffer é aberto, o erro após o eco Os caracteres não serão enviados para o navegador, mas permanecerão no buffer do servidor. Eles não serão exibidos até que você use flush ou ob_end_flush, portanto, não haverá erro no cabeçalho do arquivo. foi produzido!
2. Salve a saída (este é um uso muito clássico).
Suponha que você queira saber as informações de saída da tela do cliente, como os resultados de saída das funções, etc., e essas informações de saída serão diferentes dependendo do cliente. Podemos usar a função <?phpinfo() ?> para obter as informações de configuração do servidor, mas e se quisermos salvar a saída da função phpinfo()? Antes não havia controle de buffer, pode-se dizer que não havia jeito, mas com controle de buffer podemos resolver isso facilmente.
<?
ob_start(); //Abre o buffer
phpinfo(); //Utiliza a função phpinfo
$info=ob_get_contents(); //Obtém o conteúdo do buffer e atribui-o a $info
$file=fopen('phpinfo.txt','w'); //Abre o arquivo phpinfo.txt
fwrite($file,$info); //Escreve informações em phpinfo.txt
fclose($arquivo); //Fecha o arquivo phpinfo.txt
?>
Usando o método acima, você pode salvar as informações do phpinfo de diferentes usuários. Isso pode não ter sido possível antes! Da mesma forma, o método buffer pode ser usado para salvar tarefas que são difíceis de concluir com métodos comuns. Este é, na verdade, um método para converter alguns "processos" em "funções".