Не считываеться файл полностью..

  • Автор темы Автор темы neonet
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

neonet

Новичок
Не считываеться файл полностью..

Какая то байда происходит!..
PHP:
$file = fopen ("http://xxx:[email protected]/cgi-bin/file.zip", "r");
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
}
$zip=fread($file,60000);
$new_zip=fopen("mbase.zip", "w+");
fputs($new_zip,$zip);
fclose($new_zip);
fclose($file);

}

Но файл получаеться почемуто меньшего размера чем должен быть, и не распаковываеться...
в чём проблема?
 
извиняюсь, кажется поспешил с ответом, был невнимателен.

а что такое 60000 и откуда это число ?
 
странно.. файл всё время скачиваеться не больше чем на 2,56 KB..
а истинный размер файла 3,41 MB
McSimm кол-во байт.. а что?
 
не странно, если используется строковый режим чтения файла вместо бинарного.
 
tony2001
не подойдет тот пример, filesize() не работает с http wrapper`ом

обычный цикл нужен по feof и бинарный режим чтения, конечно.
---------
виноват, там последний пример как раз подходящий, просто у меня недооткрылся в браузере
 
McSimm
причем тут filesize()?
читать кусками, пока читается.
этот принцип следует использовать ВСЕГДА.
 
Кстати, вопрос в тему. А какими кусками лучше считывать?
 
neonet
jrip
читайте ответы в этой теме.
тут уже всё написали.
 
jrip
8192 - это размер буфера, который обычно используется в самом PHP.
 
Фанат
однако ответа на свой вопрос я не видел.
tony2001
т.е. всегда считывать именно кусками по 8192? А если файл, например, на несколько метров? есть ли смысл считывать бОльшими кусками? буду благодарен за ссылку на инфу по теме.
 
jrip
Ответ дали уже (ссылка выше)...
Считывать именно кусками по 8192 - "При чтении из сетевых потоков или конвееров, таких как те, что возвращаются при чтении удаленных файлов или из popen() и fsockopen()..."
 
garlian
ман по fread я читал, и нигде там явно не сказано, что нужно именно так и никак по другому.

Пробовал у себя, при 8192 файл размером более ста метров качается долго, хоть и канал широкий. При значительном увиличении кусков скачивается быстрее, но иногда не скачивается вообще. Однако можно или нет(тады почему?:)) качать большими кусками и чем это грозит?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху