0

<cffileupload>タグを介して複数の画像をアップロードしようとしています。fileupload.cfmタグは、画像を処理/ファイナライズするために呼び出されるファイルを呼び出します。

その画像内でスレッドを開始したいと思います (ここでスレッドを理解していない可能性があるため、お知らせください)。これにより、「画像がアップロードされました」とフラッシュ アップロード アプリに返信できますが、サムネイル生成プロセスを開始できます (これは可能性があります)。ファイルサイズにもよりますが、最後の 1 分程度)。

これまでのところ、次のようなものを追加しました:

<!--- BUILD A THREAD TO CREATE / GENERATE THUMBNAILS --->
<cfthread action="run" name="t#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#qMid.mid#">
    </cfinvoke> 
</cfthread>

generateThumbnailsメソッドを呼び出して、media id (mid)処理する項目の参照として を使用しています。ファイルの終わりに到達するとすぐに、スレッドは死ぬと思いfileupload.cfmます。

これは、すべてのファイルがアップロードされた後に実行しようとするだけのものかどうかわかりませんか?

考え?これを適切に機能させる方法がわかりません。

編集

いじくり回した後、修正したスレッドとは関係のないエラーが発生したように見えますが、このようなスレッドを「残す」ことについて何か留意する必要がありますか? ある時点で彼らを殺す必要がありますか?それらは完了後にクリーンアップされますか? スレッドに「最大実行時間」を設定するにはどうすればよいですか?

4

2 に答える 2

2

1 つのメモ:

ドキュメントは、「ゼロ以上のアプリケーション固有の属性」について語っています。私はこれに注意を払います。これにより、変数のローカル コピーが作成され、変更されない値を渡すことができます。

だから、私は電話します

<cfthread action="run" name="t#qMid.mid#" mid="#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#mid#">
    </cfinvoke> 
</cfthread>

わかる?

于 2010-11-10T21:48:15.640 に答える
2

スレッドを実行し、後で実際に呼び出さない場合<cfthread action="join" />、スレッドはページ実行スレッドと並行して実行され、必要に応じて、タスクが完了するまでずっと長く実行されます。

このようにスレッドを実行したままにしても問題はありません。完了すると、期待どおりにクリーンアップされます。

スレッドが実行されているかどうかを確認したい場合は、実行cfstat中のすべてのリクエストを一覧表示するだけで実行できますcfthread

おそらくここでCFドキュメントを見たことがあるでしょうが、さらにベン・ナダルの調査をここでチェックしてください.

スレッドのタイムアウトについては、作成したスレッドがページの実行に再参加するまで待機する最大時間を指定できますが、作成したスレッドにタイムアウト (ページ要求のタイムアウトなど) を設定する方法はありません。

それが役立つことを願っています!

于 2010-11-10T20:48:59.557 に答える