CascadiaPHP 2024

Descarregando Buffers de Sistema

O PHP fornece duas maneiras relacionadas para descarregar os buffers de sistema (enviar e descartar o conteúdo): chamando-se a função flush() e habilitando o descarregamento implicitamente com a função ob_implicit_flush() ou com a configuração implicit_flush do php.ini.

Comportamento do Descarregameto da Saída

Com o descarregamento implícito desabilitado, o PHP irá descarregar a saída somente quendo flush() for chamada ou quando o script terminar.

Com o descarregamento implícito habilitado, o PHP tentará descarregar após cada bloco de código que resulte em uma saída. A saída neste contexto é um dado de comprimento maior que zero que:

Nota: Exibir strings vazias ou enviar cabeçalhos não é considerado saída e não resultará em operação de descarregamento.

Aviso

Se o descarregamento implícito estiver habilitado, caracteres de controle (ex.: "\n", "\r", "\0") também irão ativar o descarregamento.

Limitações

Esta funcionalidade não pode descarregar buffers de saída no nível do usuário. Para usá-los juntos, buffers de saída no nível do usuário devem ser descarregados antes do descarregamento ds buffers de sistema para que o PHP produza qualquer saída.

Aviso

Chamar flush() ou habilitar o descarregamento implícito pode interferir com os manipuladores de saída de buffers no nível do usuário que definem e enviam cabeçalhos em um contexto web (ex.: ob_gzhandler()) enviando cabeçalhos antes que estes manipuladores o façam.

Buffer implementado pelo software/hardware subjacente não podem ser substituídos pelo PHP e devem ser levados em consideração ao se trabalhar com as funções de controle de buffer do PHP. Verificar as configurações de buffer dos servidores web, navegadores e consoles e trabalhar com elas pode aliviar possíveis problemas. Trabalhar em um contexto web, tanto as configurações de buffer do servidor quanto de buffer do script podem ser ajustadas para operar sequencialmente enquanto que contornar as estratégias de buffer de vários navegadores pode ser conseguido ajustando o buffer no script PHP. Em consoles que implementam buffer de linha, caracteres de nova linha podem ser inseridos nos locais apropriados antes de liberar a saída.

Diferenças SAPI No Descarregamento

Embora o descarregamento seja implementado por cada SAPI de uma maneira ligeiramente diferente, essas implementações se enquadram em uma de duas categorias:

  • SAPIs usadas em um contexto web irão descarregar cabeçalhos primeiro, e depois a saída. Apache2Handler, CGI, FastCGI e FPM são tais SAPIs.
  • Outras SAPIs tais como CLI e embed irão descarregar somente a saída.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top