timson
Новичок
Скачать файл с одновременным делением его на части
нужно скачать файл на сервер (или на какой-нить фтп) и одновременно делить его на части. Т.е. например скачиваем файл 100 мб, а пишем на сервак 10 файлов по 10 Мб.
вот я накидал функцию
но вот трабла, почему-то на разделке файлов возникает глюк.
в начале следующей части вместо исходных байт пишеться блок "мусора" (примерно чуть меньшего размера чем исходный блок, ~30-40 kb). конец части нормальный.
такое ощущение что как-то асинхронно все выполняется.. причем этот "мусор" нигде в исходном файле не встречается! Ладно бы мусор просто добавлялся в начало, он вместо исходного с искаженной длиной.
Никто не видит тута причины какой-нить???
нужно скачать файл на сервер (или на какой-нить фтп) и одновременно делить его на части. Т.е. например скачиваем файл 100 мб, а пишем на сервак 10 файлов по 10 Мб.
вот я накидал функцию
PHP:
function CopyFile2home ($filename, $src)
{
if ( ($fSrc = fopen ($src, "r")) == FALSE )
// err
$dst = $filename. ".001";
if ( ($fDst = fopen ($dst, "w")) == FALSE )
// err
$file_size = 0;
$writed = 0;
$num = 1;
while ( !feof($fSrc) )
{
$buf = fread ($fSrc, 1024*1024); // 1 Mb - buffer size
if ( $buf == FALSE )
// err
$bytes = fwrite($fDst, $buf);
if ( $bytes == FALSE )
// err
$writed += $bytes;
$file_size += $bytes;
if ( $writed > 10 * 1024*1024 ) // 10 Mb - part size
{
fclose ($fDst);
$num++;
$stmp = sprintf (".%03d", $num);
$dst = $filename. $stmp;
if ( ($fDst = fopen ($dst, "w")) == FALSE )
// err
$writed = 0;
}
}
fclose ($fDst);
fclose ($fSrc);
}
но вот трабла, почему-то на разделке файлов возникает глюк.
в начале следующей части вместо исходных байт пишеться блок "мусора" (примерно чуть меньшего размера чем исходный блок, ~30-40 kb). конец части нормальный.
такое ощущение что как-то асинхронно все выполняется.. причем этот "мусор" нигде в исходном файле не встречается! Ладно бы мусор просто добавлялся в начало, он вместо исходного с искаженной длиной.
Никто не видит тута причины какой-нить???