Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблемы при выдаче бльшого файла через скрипт


Автор: LaWay 21.8.2005, 00:14
Народ. подскажите в чем проблема! Мне необходимо скриптом выдать пользователю файл, я это делаю так:
Код

  
  header('Content-type: application/octet-stream'); 
  header('Content-Disposition: attachment; filename='.$FileName); 
  header('Content-length: '.$size); 
  $f=fopen($FileName,'rb'); 
  if($f){ 
    while(!feof($f)){ 
      $str=fread($f,16384); 
      echo $str; 
      flush(); 
    } 
  }

В итоге, при запросе скрипта сначала большая пауза, потом идет закачка, но она регулярно обрывается на 70-75%. В чем может быть проблема?

Автор: Mal Hack 21.8.2005, 00:37
Объясняю. Ты читаешь файл и читаешь всегда по 16 килобайт и выводишь их. А файлики-то наверное бинарные, так что так нельзя.
Вот так надо:
Код

$file_server_path = "123.zip";
$download_size = filesize( $file_server_path );

header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=" . $file_server_path  . ";");
header("Accept-Ranges: bytes");
header("Content-Length: " . $download_size );
readfile( $file_server_path );

Автор: LaWay 21.8.2005, 01:12
Я и читаю в бинарном режиме и открываю в нем же. В твоем варианте пауза между запросом и выдачей намного увеличилась. Настолько, что никак не могу дождаться, пока появится окно с предложением о сохранении smile

Автор: Mal Hack 21.8.2005, 13:30
Сколько файл весит?
ЗЫ: еще было бы неплохо зарегистрироваться на форуме.

Автор: laway 23.8.2005, 01:21
Файлы весят по 20-30 Мб. Скачивается соответственно 17-25. Разрешенное время выполнения скрипта на сервере - около часа. При моей скорости сети эти 17 МБ скачиваются за 5 минут, так что проблема не в этом

Автор: Mal Hack 23.8.2005, 08:56
Странно это все...
Кажется мне, что тут не в PHP дело...
Ради интереса, попробуй этот файл средствами PHP скопировать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)