現在取り組んでいる大規模なプロジェクト用の小さなダウンロード モジュールを構築していて、少し問題が発生しました。小さなファイルの場合は完全に機能しますが、ブラウザー (任意のブラウザー) が大きなファイルのダウンロードを開始すると、他のページと同じように単純に読み込まれ、最後の数秒で (サイズに関係なく) ファイル全体がほぼ瞬時に "ダウンロード" されます。私は HTTP 1.1 標準を何度も確認してきましたが、その文字どおりに従っているようです。すぐに思い浮かぶのは、PHP が実際にクライアントにデータを送信するときです。答えは、スクリプトの実行時であるべきです。私は、この原則をデバッグ用の他の長いスクリプトで使用しています。
関連するコードは次のとおりです (もちろん他にもたくさんありますが、ヘッダーと出力が実際に送信される場所は次のとおりです。
header("Content-Type: application/force-download");
header("Content-length: $size");
header('Content-Disposition: attachment; filename="'.$fileData['name'].'"');
for ($i=0; $i<$size; $i+=$step)
{
$content = fread($file, $step);
if ($content === false)
$content = "";
echo $content;
}
die();
何か案は?これは、このブロックを長い間見つめていてもわからない明らかな問題だと感じています。
前もって感謝します!