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

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

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);

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

McSimm

Новичок
извиняюсь, кажется поспешил с ответом, был невнимателен.

а что такое 60000 и откуда это число ?
 

neonet

Новичок
странно.. файл всё время скачиваеться не больше чем на 2,56 KB..
а истинный размер файла 3,41 MB
McSimm кол-во байт.. а что?
 

McSimm

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

McSimm

Новичок
tony2001
не подойдет тот пример, filesize() не работает с http wrapper`ом

обычный цикл нужен по feof и бинарный режим чтения, конечно.
---------
виноват, там последний пример как раз подходящий, просто у меня недооткрылся в браузере
 

tony2001

TeaM PHPClub
McSimm
причем тут filesize()?
читать кусками, пока читается.
этот принцип следует использовать ВСЕГДА.
 

jrip

Новичок
Кстати, вопрос в тему. А какими кусками лучше считывать?
 

Фанат

oncle terrible
Команда форума
neonet
jrip
читайте ответы в этой теме.
тут уже всё написали.
 

tony2001

TeaM PHPClub
jrip
8192 - это размер буфера, который обычно используется в самом PHP.
 

jrip

Новичок
Фанат
однако ответа на свой вопрос я не видел.
tony2001
т.е. всегда считывать именно кусками по 8192? А если файл, например, на несколько метров? есть ли смысл считывать бОльшими кусками? буду благодарен за ссылку на инфу по теме.
 

garlian

Новичок
jrip
Ответ дали уже (ссылка выше)...
Считывать именно кусками по 8192 - "При чтении из сетевых потоков или конвееров, таких как те, что возвращаются при чтении удаленных файлов или из popen() и fsockopen()..."
 

jrip

Новичок
garlian
ман по fread я читал, и нигде там явно не сказано, что нужно именно так и никак по другому.

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