ファイルをダウンロードするためにphpを使用したプログラムに取り組んでいます。スクリプト要求は次のようなものです: PHP を使用してファイルを送信するときに、再開可能なダウンロードにhttp://localhost/download.php?file=abc.zip
記載されているスクリプトを使用しますか?
マルチスレッドまたはシングルスレッドのダウンロードのいずれかで、300M 未満のファイルに対しては確実に機能しますが、300M を超えるファイルをダウンロードしようとすると、シングルスレッドのダウンロードで問題が発生し、約250Mのデータしかダウンロードできませんでした。 http 接続が切断されました。ブレークポイントで壊れません..なぜですか?スクリプトをデバッグして、壊れた場所を特定しました。
$max_bf_size = 10240;
$pf = fopen("$file_path", "rb");
fseek($pf, $offset);
while(1)
{
$rd_length = $length < $max_bf_size? $length:$max_bf_size;
$data = fread($pf, $rd_length);
print $data;
$length = $length - $rd_length;
if( $length <= 0 )
{
//__break-point__
break;
}
}
これは、要求されたすべてのドキュメントが 250M データ バッファしか取得できないように見えecho
ますprint
が、マルチスレッドを使用してファイルをダウンロードすると機能します