2011-04-25 20 views

答えて

2

管理者のCFに割り当てられているRAMの容量を増やすことでこれを実現できるかもしれませんが、CFはこれに適したツールではなく、少なくとも2つの方法があります。

システムに関することを知らずに、私はこの一般的なアドバイスを提供します:ファイル(特にそのサイズのもの)をdbに保存しないでください。代わりに、DBへの参照を格納してファイルシステムに格納します。それらがWebからアクセスされている場合は、それらをWebサーバーに保管します。

実際にDBに格納する必要がある場合は、ファイルをSQLサーバーに移動し、CFを使用せずに挿入します。たとえば、CFを使用してファイルをSQLサーバーにFTP送信した後、挿入を実行するファイルの場所でストアドプロシージャ(または同様のもの)を呼び出すことができます。

+0

実際のファイルを直接ファイルシステムに格納し、DB内のそれらのファイルへの参照は、Sql Server Filestreamの機能とまったく同じです。 –

+0

私の理解では、ファイルストリームはストレージにOSを使用しますが、DB接続を介してファイルをロードしてストリームします。これは、CFがそれらをメモリに格納しなければならないことを意味します。私が話していることは、ファイル自体をWebサーバーに格納し、DBに格納されたキーに名前を変更するか、ファイル名を格納することです。次に、ファイルを名前で参照し、Webサーバーが直接ストリームを流すようにします。つまり、膨大なオーバーヘッドを伴うDBサーバーまたはCFを介してファイルをストリーミングする必要はありません。 –

2

CFなどの環境を使用して、非常に大きなファイルを変数に読み込むことはありません。ストリームを使用します。私は、C#、Download and Upload images from SQL Server via ASP.Net MVCとFILESTREAMストレージオプションFILESTREAM MVC: Download and Upload images from SQL Serverを使用するフォローアップでこれを行う方法を説明した記事を持っています。 CFにも同じテクニックを適用できます。

0

古いバージョンのColdfusion(以前のバージョン)または64ビット以外のバージョンを使用している場合は、いずれにしても1.5GB以上のRAMをColdfusionサーバーに割り当てることができない場合があります。データベースへのファイルストリームを処理し、Javaまたは.NetオブジェクトとしてインクルードするクラスをJavaまたはC#で記述する必要があります。

Adob​​eがColdfusion 9でこの問題に対処したと思っていましたが、このような大きなファイルを扱って以来、しばらくお待ちください。

関連する問題