-1

誰かのサイトで大きなビデオ ファイル (約 300 MB) へのダウンロード リンクを追加しようとしていますが、残念ながら共有ホスティングを使用しています (多くの人がダウンロードする場合はアップグレードする必要があると伝えました)。人々が「対象をファイルに保存」する必要がないようにしたいので、通常は次のコードを使用してダウンロードを強制します。

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename={$file}");
header("Content-Transfer-Encoding: binary");
readfile($file);

これは、小さいファイルでは問題なく機能しますが、大きいファイルでは機能しません。また、エラーをオンにした後でも、エラーもエラー ログも表示されません。これは共有メモリの制限(またはおそらくタイムアウト)に関係していると確信していますが、共有サーバーで大きなファイルのダウンロードを強制する方法を知っている人はいますか?メモリ制限を十分に高く設定するには?

どうもありがとう、

デイブ

4

1 に答える 1

0

通常の解決策は、ファイル出力を自分で行い、Web サーバーの独自のバッファーに処理させることです。

$fh = fopen($file, 'rb') or die("Unable to open $file");
while($data = fread($fh, 10240)) { // 10kbyte chunks.
   echo $data;
}
fclose($fh);
于 2011-09-07T16:11:59.523 に答える