ユーザーがクリックできるようにするリンクがあり、写真のZIPファイルを取得します。 zipファイルが存在しない場合は、スレッドを開始してzipを作成し、写真が現在処理中であることをユーザーに示すメッセージを表示します。ColdFusionのパフォーマンスとロックの最適化
私が避けようとしているのは、ユーザーがリンクを繰り返しクリックし、zipファイルの作成/更新を試みる大量のスレッドを設定することです。 zipファイルの処理はシステムリソースを大量に消費するので、アプリケーションが一度に1つのzipを生成できるようにしたいだけです。コンパイル中に忙しい場合は、何もしないでキューに入れてください。
は現在、私は取り扱いしていますどのようにスレッドの周りのcflockである:私は何を期待していますが、ここで発生し
<cflock name="createAlbumZip" type="exclusive" timeout="30" throwontimeout="no">
<cfthread action="run" albumId="#arguments.albumId#" name="#CreateUUID()#">
....
(私はそれをテストする場合、それが動作しているようだが)がある場合、それがチェックするということです現在、 'createAlbumZip'というロックを使用して実行中のスレッドです。存在する場合、30秒間要求をキューに入れ、その後、エラーなしでタイムアウトする必要があります。それは30秒以内にそれを作成することができなかった場合はそれは罰金です。
これはうまくいくようですが、私の質問です:これはこのようなシナリオを処理する最善の方法ですか?適切な方法でロックしていますか?私が見ないこのアプローチから生じる可能性のある欠点はありますか?
したがって、ユーザーがリンクを複数回クリックすると(100としましょう)、ジップを生成しますが、100スレッドを作成しません。その場合、効率はどれくらいですか? – Cheeky