9

以前、cfm ページの cf スコープについて質問したことがあります (CFC スコープと潜在的な問題を理解できてよかったです) が、変数スコープについてはまだ明確ではありません。

以前の質問への回答では、cfm ページを使用するとスレッド セーフの問題は発生せず、2 人の異なるユーザーが同じページにアクセスして競合状態やスレッド セーフの問題が発生するシナリオは発生しないことが示唆されました (たとえ私が変数をデフォルトの cfm 変数スコープのままにし、各ユーザーの変数スコープが分離されて独立していることを確認してください (これが私の最後の質問Coldfusion Scopes Clarification です) 。

ただし、 cfmページでの関数の使用と変数スコープの使用に関するこのブログ投稿http://blog.alexkyprianou.com/2010/09/20/variables-scope-in​​-coldfusion /を読みましたが、それは変数スコープが複数のユーザー間で共有されるシナリオを提案します (CFC のコンテキストでこの問題を理解しています - それらは Java クラスに似ており、変数スコープはインスタンス変数であるため、CFC が共有/アプリケーションである場合、スレッドの安全性の問題があります)。スコープ/シングルトン) しかし、これは以前の回答に反するようです-cfm ページの関数によって変数スコープに配置された変数に他のユーザーがアクセスできる場合、cfm ページコードで直接変数スコープに配置された変数は同じですか?

いくつかの明確なドキュメントとガイドを期待していましたが、さまざまなスコープとそれらが利用可能な場所についての決定的な説明を実際に見つけることができませんでした.

ありがとう!

4

3 に答える 3

3

誤解を招くブログだと思います。ただし、自分で確認したい場合は、彼の関数を使用してページを作成してください。こんな感じにします。

<cffunction name="test" returntype="void">
<cfscript>
foo = now();
sleep(3 * 60 * 1000);  // should be 3 minutes
writedump(foo);
</cfscript>
<cffunction>

<cfdump var="#now()#">
<cfset test()>

ページを実行します。3 分間、別のブラウザーまたはタブを開いて、もう一度実行します。最初に実行した場所に戻り、結果を待ちます。2 つの出力に大きな違いがない場合、2 番目のページ リクエストは最初のページ リクエストに影響を与えていません。

私は自分で試したことはありませんが、最初のリクエストに影響を与えない2番目のリクエストに賭けることに注意してください。

于 2013-04-06T20:26:15.927 に答える