XCI. Output Control(Controle de Saída)

Introdução

As funções de Controle de Saída permitem a você controlar quando a saída é enviada do script. Isto pode ser util em várias situações diversas, especialmente se você precisa enviar cabeçalhos para o browser depois que seu script começou a enviar dados. As funções de controle de saída não afetam os cabeçalhos enviados usando header() ou setcookie(), somente funções como echo() e dados entre blocos de código PHP.

Dependências

Nenhuma biblioteca externa é necessária para compilar esta extensão.

Instalação

Não há nenhuma instalação necessária para utilizar estas funções, elas fazem parte do núcleo do PHP.

Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do php.ini.

Tabela 1. Opções de configuração de controle de saída

NomePadrãoModificavel
output_buffering"0"PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handlerNULLPHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush"0"PHP_INI_PERDIR|PHP_INI_SYSTEM
Para maiores detalhes e definiç~es das constantes do PHP_INI_* veja ini_set().

Breve descrição das diretivas de configuração.

output_buffering boolean/integer

Você pode ativar o buffer de saída para todos os arquivos definindo esta dretiva para 'On'. Se você quiser limitar o tamanho do buffer para um certo limite - você pode usar um número máximo de bytes ao invés de 'On', como valor para esta diretiva (ex., output_buffering=4096).

output_handler string

Você pode redirecionar toda a saída do seu script para uma função. Por exemplo, se você definir set output_handler para mb_output_handler(), a codificação dos caracteres será transparentemente convertida para a codificação especificada. Definindo qualquer função para gerenciar a saída ativa o buffer de saída.

Nota: Você não pode usar mb_output_handler() com ob_inconv_handler() e você não pode usar ob_gzhandler() e zlib.output_compression.

implicit_flush boolean

FALSE por padrão. Mudando isto para TRUE diz ao PHP para dizer para a camada de saída descarregar a si mesma automaticamente a cada bloco de saída. Isto é equivalente a utilizar a função do PHP flush() a cada print() ou echo() e a cada bloco de HTML.

Quando estiver usando o PHP em um ambiente web, ativando esta opção tem uma séria implicação na performance e geralmente é recomendada apenas para debug. O valor padrão é TRUE quando operando sobre CLI SAPI.

Veja também ob_implicit_flush().

Tipos Resource

Esta extensão não possui nenhum tipo resource.

Constantes pré-definidas

Esta extensão não possui nenhuma constante.

Exemplos

Exemplo 1. Exemplo de Controle de saída

<?php

ob_start
();
echo
"Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>

No exmplo acima, a saída de echo() será guardada no bffer de saída até que ob_end_flush() seja chamada. Em quanto isto, a chamada para setcookie() guadará o cookie sem causar um erro. (Normalmente você não pode enviar cabeçalhos para o browser depois que dados já foram enviados.)

Nota: Quando atualizando a partir do PHP 4.1 (e 4.2) para 4.3 note que devido a um bug nas versões anteriores, você deve ter certeza que implict_flush esta em OFF no seu php.ini, se não qualquer saída com ob_start() não será escondida da saída.

Índice
flush -- Descarrega o buffer de saída
ob_clean --  Limpa (apaga) o buffer de saída
ob_end_clean --  Limpa (apaga) o buffer de saída e desativa o buffer de saída
ob_end_flush --  Descarrega (envia) o buffer de saída e desativa o buffer de saída
ob_flush --  Descarrega (envia) o conteúdo do buffer de saída
ob_get_clean --  Obtém o conteudo do buffer e exclui o buffer de saída atual
ob_get_contents --  Retorna o conteúdo do buffer de saída
ob_get_flush --  Flush the output buffer, return it as a string and turn off output buffering
ob_get_length --  Retorna o tamanho do buffer de saída
ob_get_level --  Retorna o nível do mecanismo de buffer de saída
ob_get_status --  Obtém a situação dos buffers de saída
ob_gzhandler --  Função de callback para ob_start para compactar com gzip o buffer de saída
ob_implicit_flush --  Ativa ou desativa o descarregar implicito
ob_list_handlers --  List all output handlers in use
ob_start -- Ativa o buffer de saída
output_add_rewrite_var --  Add URL rewriter values
output_reset_rewrite_vars --  Reset URL rewriter values