O problema foi finalmente resolvido quando comecei a alterar as configurações de configuração do servidor, a partir de respostas à pergunta do StackOverflow ( link )
Olhando mais para o problema do tamanho do arquivo, descobri que o tamanho estava sendo definido corretamente no script, mas isso não estava sendo refletido nos cabeçalhos retornados ao navegador. Em vez disso, os cabeçalhos que estavam sendo devolvidos eram:
http://www.grinderschool.com/download_video_test.php?t=KillsAids021&format=wmv
GET /download_video_test.php?t=KillsAids021&format=wmv HTTP/1.1
Host: www.grinderschool.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: style_cookie=printonly; phpbb3_7c544_u=2; phpbb3_7c544_k=44b832912e5f887d; phpbb3_7c544_sid=e8852df42e08cc1b2250300c2897f78f; __utma=174624884.2719561324781918700.1251850714.1270986325.1270989003.575; __utmz=174624884.1264524375.411.12.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=low%20stakes%20poker%20videos; phpbb3_cmviy_k=; phpbb3_cmviy_u=2; phpbb3_cmviy_sid=d8df5c0943863004ca40ef9c392d371d; __utmb=174624884.4.10.1270989003; __utmc=174624884
HTTP/1.1 200 OK
Date: Sun, 11 Apr 2010 12:58:02 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.11
Content-Disposition: attachment; filename=KillsAids021.wmv
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=10, max=30
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: video/x-ms-wmv
No final, descobriu-se que o problema era a compressão gzip, que estava sendo aplicada automaticamente pelo meu servidor web para qualquer conteúdo gerado pelo php. Abaixo estão os passos que tomei para corrigi-lo:
Primeiro, eu estabeleci um novo php.ini para controlar minha pasta individual no servidor compartilhado. Então eu confirmei que meu arquivo php.ini estava configurado com zlib.output_compression = Off
Isso não resolveu isso.
Em seguida, observei as configurações específicas do Apache. Como é um servidor compartilhado, não consegui acessar diretamente nenhum dos arquivos de configuração do Apache, mas consegui controlar como eu queria que meu site fosse manipulado, criando um arquivo .htaccess e adicionando a linha: SetEnvIfNoCase Request_URI \.php$ no-gzip dont-vary
Com esta linha, nenhum dos meus php será comprimido. Isso fez o truque. A desvantagem desta solução é que isso resultará em tamanhos maiores de arquivos e uso de largura de banda para as páginas php no meu site. Uma vantagem positiva é que isso reduzirá nosso consumo de CPU (que é o único fator de estar em um servidor compartilhado que tem sido um fator limitante até agora). No final, esta é definitivamente uma mudança bem vinda!