Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт скачки файлов - 502 ошибка
 
 автор: P@Sol   (09.06.2010 в 10:11)   письмо автору
 
 

использую код
    $fd = fopen($filename, "r");  
    if (!$fd){  
      header ("HTTP/1.0 403 Forbidden");  
      exit;  
    }  
    $content = fread($fd, filesize($filename));  
    fclose($fd);  
  
    $str="Content-Disposition: attachment; filename=" .$_GET['file'];  
    header($str);  
    header("Content-type: application/octet-stream");  
    print $content;  


на файлах до 100 Мб все работает, на файле 200 Мб выдает 502-ю ошибку (Bad Gateway)

напрямую файл скачивается на ура

  Ответить  
 
 автор: sl1p   (09.06.2010 в 10:38)   письмо автору
 
   для: P@Sol   (09.06.2010 в 10:11)
 

возможно в настройках стоит не больше 100мб?

  Ответить  
 
 автор: P@Sol   (09.06.2010 в 11:13)   письмо автору
 
   для: sl1p   (09.06.2010 в 10:38)
 

сбой происходит на строке
$content = fread($fd, filesize($filename));  

  Ответить  
 
 автор: Саня   (09.06.2010 в 11:43)   письмо автору
 
   для: P@Sol   (09.06.2010 в 11:13)
 

Используйте readfile().

  Ответить  
 
 автор: P@Sol   (09.06.2010 в 11:59)   письмо автору
 
   для: Саня   (09.06.2010 в 11:43)
 

все осталось по прежнему
<?
if(file_exists($filename))
{
    
/* If the visitor is not a search engine, count the downoad: */
    
if(!is_bot())

            
    
$str="Content-Disposition: attachment; filename=" .$_GET['file'];  
    
header($str);  
    
header("Content-type: application/octet-stream");  
  
readfile($filename);  
    exit;
}

  Ответить  
 
 автор: Саня   (09.06.2010 в 12:28)   письмо автору
 
   для: P@Sol   (09.06.2010 в 11:59)
 

Сомнения вызывает только условие if(!is_bot()), которое действует только на $str="Content-Di...

  Ответить  
 
 автор: P@Sol   (09.06.2010 в 13:08)   письмо автору
 
   для: Саня   (09.06.2010 в 12:28)
 

да) ошибка, но на вывод она никак не влияет...что делать???(

  Ответить  
 
 автор: P@Sol   (09.06.2010 в 14:08)   письмо автору
 
   для: P@Sol   (09.06.2010 в 10:11)
 

в код добавил следующую функцию
<?
function readfile_chunked ($filename) { 
  
$chunksize 1*(1024*1024); // how many bytes per chunk 
  
$buffer ''
  
$handle fopen($filename'rb'); 
  if (
$handle === false) { 
    return 
false
  } 
  while (!
feof($handle)) { 
    
$buffer fread($handle$chunksize); 
    print 
$buffer
  } 
  return 
fclose($handle); 

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования