Pergunta

É possível no PHP contagem do número de bytes transmitidos ao cliente? Por exemplo, se estou emitindo um arquivo de 10 MB, existe uma maneira de descobrir se todos os 10 MB foram enviados ao cliente ou para ver se o cliente interrompeu a transferência parcialmente? Eu sei que o Apache irá registrar isso depois, mas gostaria de acessar os dados no PHP.

Foi útil?

Solução

Dê uma olhada no ignore_user_abort e connection_abort função.

Outras dicas

Aqui está o que eu acabei fazendo (obrigado Gumbo):

ignore_user_abort(true);

$handle = fopen($file_path, 'r');
while ( ! feof($handle)) {
    echo fread($handle, 4096);
    if (connection_aborted()) {
        $transfer_success = false;
        $bytes_transferred = ftell($handle);
        break;
    }
}
fclose($handle);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top