2011-12-08 9 views
0

現在、私のサーバーがファイルをダウンロードし、ユーザーがほぼ同じことを行うことができるPHPアプリケーションを開発しようとしています。私はすでに「ユーザーがサーバーよりも速くダウンロードすると...」という問題については考えていますが、現時点では問題にはなりません。 これを行うには、私はPHPのヘッダー関数とreadfile関数を使用しました。ここに私のコードです:PHPヘッダーとダウンロード

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="'.$data['name'].'";'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.$data['size']); 
readfile($remoteFile); 

私は、ユーザーがリンクをクリックしたときにダウンロードされたファイルやないサイズの適切なサイズを設定するには、Content-Lengthヘッダを使用するようにしなければなりません。ただし、数秒または数分後にダウンロードが停止し、再起動が必要になります。 解決策について考えるなら、たとえそれがheader()を使用しなかったとしても、機能、教えてください。私はこれが直接あなたがセーフモードで実行した場合あなたに施行された最大ランタイム設定に関連していることを経験している

+0

ファイルサイズは何を使用してその愚かやすいですか?ローカルホストか実サーバマシンですか? –

+1

あなたのスクリプトは、おそらくサーバー上でタイムアウトしている(またはホスティング会社ごとに蹴られている)のかもしれません。 – nickb

+0

私は大きなファイル(> 500 Mb)を持つことができます。それは実際の専用サーバー上にあります。私はphp.iniでmax_php_execution_timeを0に設定しようとしていますが、それでもうまくいきません... –

答えて

0

は...事前にありがとうございます。

このオプションをお持ちの場合は、set_time_limit(0)を設定して、動作するかどうか確認してください。

独自のサーバーをお持ちの場合は、特に大きなファイルをユーザーに送信するために構築されているため、Apacheのmod_xsendfileモジュールを調べる必要があります。

ああ、と

header("X-Sendfile: $path_to_somefile"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$somefile\""); 
exit; 
+0

あなたの答えをありがとうが動作しません...空のファイル(0バイト)をダウンロードします私はヘッダー、奇妙な、 "コンテンツ長さ"を設定... –

関連する問題