Poderia seu servidor estar aplicando gzip Content-Encoding no arquivo que você está produzindo do PHP (ou você poderia tê-lo habilitado no próprio PHP, ex: zlib.output_compression
)? Compactar um arquivo já compactado tende a tornar o arquivo real maior, portanto, se o cliente ler o cabeçalho Content-Length do script, ele interromperá o download antes que o arquivo zipado "maior" seja processado.
wget
não suporta compactação, portanto, o servidor não tentará usar Content-Encoding quando você se conectar com o wget. Experimente com curl
e veja se você obtém o arquivo quebrado. Se você usar o Chrome, Ctrl - Deslocar - J para abrir as Ferramentas do desenvolvedor e ir para a guia Rede. Enquanto isso estiver aberto, volte para a janela principal da qual você abriu e clique no link para baixar o arquivo. Ele deve criar uma entrada na lista de solicitações na qual você pode clicar, que abrirá uma subjanela com a guia "Cabeçalhos", na qual você poderá ver se tinha a linha Content-Encoding:
na seção Response Headers:
.
BTW, acho que você quer fazer ob_end_clean()
, em vez de ob_end_flush()
, pois _flush()
envia ao cliente qualquer coisa que você tenha no buffer, enquanto _clean()
descarta o buffer e os cabeçalhos que já estão nele. / p>