このソリューションにを正しく利用していますか?
-
30-09-2019 - |
質問
私は、 <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
メソッド、およびaを使用します media id (mid)
どのアイテムを処理するかについての参照として。私たちが終わりに達したらすぐにスレッドが死ぬと思います fileupload.cfm
ファイル。
これがすべてのファイルがアップロードされた後、私が実行しようとするべきものであるかどうかはわかりませんか?
考え?これを適切に機能させる方法がわかりません。
編集
いじくり回した後、私が修正したスレッドとは無関係のエラーがあるように見えますが、このような「残す」スレッドで何か留意すべきですか?ある時点でそれらを殺すべきですか?完成後に掃除されますか?スレッドに「最大実行時間」を配置するにはどうすればよいですか?
解決
スレッドを実行して実際に電話しない場合 <cfthread action="join" />
ある時点で、スレッドはページ実行スレッドと並行して実行され、必要に応じてタスクが完了するまではるかに長く実行されます。
スレッドをこのように実行するのに問題はありません - 完了すると予想されるようにクリーンアップされます。
スレッドが実行されているかどうかを確認したい場合 cfstat
すべての実行中のリクエストをリストします - によってキックオフされたものでさえ cfthread
.
おそらくCFドキュメントを見たでしょう ここ しかし、それについてはベンナダルの調査をチェックしてください ここ.
スレッドのタイムアウトについては、ページの実行に再参加するために作成したスレッドを待つために最大時間を指定できますが、作成したスレッドにタイムアウト(ページリクエストタイムアウトなど)を配置する方法はありません。
それが役立つことを願っています!
他のヒント
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>
わかる?