私たちの学校には約 7kb/s のインターネット速度制限があり、300Mb 容量の php ホストがいくつかあります。しかし、私たちの PHP スクリプトには制限がないことに気付きました!
ホストにファイルをダウンロードしたかったのですが、このサイトで答えを見つけました。
ここに問題があります。300 Mb を超えるサイズをダウンロードすることはできません。また、ダウンロードを高速化するために友人のアカウントを使用できるようにしたいと考えています (もちろん、友人の許可を得て)。
私はless_then_300Mb_filesをそれ自体に移動して残りをダウンロードできる(学校の)コンピューターに完全にアクセスできます。
開始するには、次のコードを書きました。
<?php
function downloadfile ($url, $path){
$step=1024;
$fsize=0;
if(file_exists($path))
$fsize=filesize($path);
$dlsize=filesize($url);
echo "$fsize<br>$dlsize<br>";
$file = fopen ($url, "rb");
if ($file)
{
$newf = fopen ($path, "ab");
fseek($newf,$fsize);
fseek($file,$fsize);
if($newf)
while(ftell($newf)<$dlsize)
{
if($dlsize-ftell($newf)<$step)
fwrite($newf, fread($file, $dlsize-ftell($newf)), $dlsize-ftell($newf));
else
fwrite($newf, fread($file, $step), $step );
}
}
if ($file)
fclose($file);
if ($newf)
fclose($newf);
}
$url=$_GET['url'];
$exp=explode("/",$url);
downloadfile($url,$exp[count($exp)-1]);
?>
ローカル ファイルでは問題なく動作fseek
しますが、URL では他のコマンドがうまく機能しません。
IDMのようにして、ファイルを再開および一時停止できるようにしたい。また、できれば複数リクエストでダウンロードしてほしいです。
私の機能の何が問題なのですか? ファイルの一部をダウンロードするにはどうすればよいですか?
詳細情報: サーバーは Linux ベース
で、アクセスできるコンピューターは win7 です。
vb.net、php(!)、および少しの C++ を知っています。