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.
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:
<?php ?>
php://output
Nota: Exibir strings vazias ou enviar cabeƧalhos nĆ£o Ć© considerado saĆda e nĆ£o resultarĆ” em operação de descarregamento.
Se o descarregamento implĆcito estiver habilitado, caracteres de controle
(ex.: "\n", "\r",
"\0")
também irão ativar o descarregamento.
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.
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.
Embora o descarregamento seja implementado por cada SAPI de uma maneira ligeiramente diferente, essas implementaƧƵes se enquadram em uma de duas categorias:
Apache2Handler, CGI,
FastCGI e FPM
são tais SAPIs.
CLI e embed
irĆ£o descarregar somente a saĆda.