2012-06-13 12 views
6

すべてのヘッダーを試しました。 コンテンツの長さの有無。900 MB http強制ダウンロードがほとんど終了しない

問題は、ダウロードが途中でクラップすることです。しかし、たいていの場合に限ります。

時にはうまくいきます。

サーバーリソースの使用は簡単です。 すべての設定ファイルは正常です。私はphpスクリプトを実行していません。

誰もこれまで見たことがありますか?それは私のせいでもないのですか?なぜ時々?

$file = "http://domain.com/files/".$item_number.".mov"; 
header('Pragma: no-cache'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Content-Description: File Download'); 
header('Content-Type: application/force-download'); 
//header ('Content-Type: video/quicktime');//doesnt seem to download at all here 
header('Content-Length: '.filesize($file)); 
header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
header('Content-Transfer-Encoding: binary'); 
readfile($file); 
exit(); 

ありがとう、 ごめんなさい、初めてです。

+4

このダウンロードはPHPスクリプトによって行われていますか?コードを見せてくれますか? –

+3

初心者から質問されただけで、閉鎖の質問を停止してください。これは本当の質問の100%です。 –

+0

ログファイルを見たことがありますか? PS - コードしてください。 – xbonez

答えて

3

これにはいくつかの理由があります。

サーバーリソースは問題ありませんが、PHPをreadfile()として送信する前にファイル全体をメモリにロードすると思います。幸いなことに、複数のダウンロードで問題が発生するのを避けるために間違いなく使用しなければならないドキュメントには、solutionがあります:)

また、スクリプトの実行時間を無限に設定しましたか?

次はサーバーの設定です。多分彼らはいくつかのタイムアウト/リソース豚の理由で接続を閉じるかもしれません。

Google Chromesデベロッパーツールを使用して、送信しているヘッダーを詳しく調べます。 PHPはいくつかのヘッダーを独自に設定します。あなたはスクリプトの先頭にsession_cache_limiter(false);を入れてください。私が正しく覚えていれば、さらにExpires: Thu, 19 Nov 1981 08:52:00 GMT ...これはなぜ悪いですか?次に来る;)

あなたはEtagとLast-Modifiedヘッダーを送ることができます。私はそれがダウンロードを再開することを可能にするあなたのリソースの一意の識別子です。私はこれについての良い記事を検索することは、ちょうどここにいくつかの文を与えるよりも良いと思う。あなたのケースでは、PHPをstat() Etagを作成する機能を使用することができます。

ヘッダーおよびダウンロードに苦しんで何人かの人々がありますが、あなたが開始する(またはあなたのケースを修正する)ことができhere

概要:

  • はあなたのPHP /サーバーの有効期限/制限/リソース設定
  • をチェック
  • ダウンロードを再開できるようにする
  • 送信しているヘッダーを確認してください

これ以降は問題ありません。まだ壊れていても再開すると...

良い進歩と成功!

+1

マニュアルの "readfile()は大きなファイルを送信してもメモリの問題は発生しません。メモリ不足エラーが発生した場合は、ob_get_level()で出力バッファリングがオフになっていることを確認してください。 – Matthew

+0

おそらく共有ホストまたは何か他の人 - 私が知っているのは理由が分かっているだけです:) readfile()はメモリの問題を表示しません。* IF * ...間違いなくリストの1つです。 –

+0

http://stackoverflow.com/questions/6627952/why-does-readfile-exhaust-php-memory serverクラップス、複数のユーザー、本質的に私が言ったこと - そして主なことはまだこのようなリソースの豚を排除することです –

関連する問題